This is a live mirror of the Perl 5 development currently hosted at
8 years agoDarwin: set ld to 'cc' if $cc is 'cc' or empty, $cc otherwise.
Jarkko Hietaniemi [Sun, 14 Sep 2014 17:28:00 +0000 (13:28 -0400)]
Darwin: set ld to 'cc' if $cc is 'cc' or empty, $cc otherwise.

8 years agoadd test for rt122747
Yves Orton [Sun, 14 Sep 2014 16:55:12 +0000 (18:55 +0200)]
add test for rt122747

8 years agoshare_hek_hek "return value" is unused here.
Jarkko Hietaniemi [Sun, 14 Sep 2014 13:47:43 +0000 (09:47 -0400)]
share_hek_hek "return value" is unused here.

(noticed by gcc 4.9)

8 years agoDarwin: if cc is explicitly gcc/g++, use it also as ld.
Jarkko Hietaniemi [Sun, 14 Sep 2014 02:06:13 +0000 (22:06 -0400)]
Darwin: if cc is explicitly gcc/g++, use it also as ld.

8 years agoDefine Perl_isfinite only if not already defined.
Jarkko Hietaniemi [Sun, 14 Sep 2014 01:13:10 +0000 (21:13 -0400)]
Define Perl_isfinite only if not already defined.

8 years agoperldelta: Entry for [perl #122655].
Karl Williamson [Sun, 14 Sep 2014 15:17:41 +0000 (09:17 -0600)]
perldelta: Entry for [perl #122655].

5.20 regression: '"X" !~ /[x]/i'

It looks like this patch, included in 5.20.1, did not get a perldelta
entry for that release.

8 years agoperldelta: Note bug fix to suppress repeated warnings
Karl Williamson [Sun, 14 Sep 2014 14:53:54 +0000 (08:53 -0600)]
perldelta: Note bug fix to suppress repeated warnings

8 years agoperldelta: Mention -T -B changes
Karl Williamson [Sun, 14 Sep 2014 14:37:37 +0000 (08:37 -0600)]
perldelta: Mention -T -B changes

8 years agoCopy perl5201delta into blead
Steve Hay [Sun, 14 Sep 2014 14:20:36 +0000 (15:20 +0100)]
Copy perl5201delta into blead

8 years agoChanged Module-CoreList version to how it should be
Chris 'BinGOs' Williams [Sun, 14 Sep 2014 14:02:18 +0000 (15:02 +0100)]
Changed Module-CoreList version to how it should be

That's the last time I try and be clever and use a tool to
update versions

8 years agoRemove the corevers.t from Module-CoreList and amend corelist porting test
Chris 'BinGOs' Williams [Sun, 14 Sep 2014 13:53:57 +0000 (14:53 +0100)]
Remove the corevers.t from Module-CoreList and amend corelist porting test

8 years agoBump Module-CoreList versions again
Chris 'BinGOs' Williams [Sun, 14 Sep 2014 13:48:45 +0000 (14:48 +0100)]
Bump Module-CoreList versions again

I've removed all the v5.21.4 data from the release I am going to
make to CPAN, so as not to break blead the version needs bumping
again to a higher version than I am going to release.

8 years agoBump Module-CoreList versions to new date stamped version
Chris 'BinGOs' Williams [Sun, 14 Sep 2014 13:46:00 +0000 (14:46 +0100)]
Bump Module-CoreList versions to new date stamped version

8 years agoAdd epigraph for 5.20.1
Steve Hay [Sun, 14 Sep 2014 13:26:46 +0000 (14:26 +0100)]
Add epigraph for 5.20.1

8 years agoPerl 5.20.1 today
Steve Hay [Sun, 14 Sep 2014 11:30:17 +0000 (12:30 +0100)]
Perl 5.20.1 today

8 years agoPerl 5.20.1 today
Steve Hay [Sun, 14 Sep 2014 11:30:09 +0000 (12:30 +0100)]
Perl 5.20.1 today

8 years agoUse Perl_frexp, and cast arg to NV as appropriate.
Jarkko Hietaniemi [Sat, 13 Sep 2014 17:02:49 +0000 (13:02 -0400)]
Use Perl_frexp, and cast arg to NV as appropriate.

8 years agoWarning about the va_arg vs long doubles.
Jarkko Hietaniemi [Sat, 13 Sep 2014 15:54:57 +0000 (11:54 -0400)]
Warning about the va_arg vs long doubles.

8 years agoUntangle the fp value retrieval.
Jarkko Hietaniemi [Sat, 13 Sep 2014 01:55:58 +0000 (21:55 -0400)]
Untangle the fp value retrieval.

8 years agoDisable isfinite on VMS.
Craig A. Berry [Sat, 13 Sep 2014 22:24:20 +0000 (17:24 -0500)]
Disable isfinite on VMS.

While the macro exists (in fp.h, not math.h) and it does work on
ordinary doubles, it does not work on long doubles, which is the
only use of it so far in the Perl core.  In Perl_sv_vcatpvfn_flags,
isfinite is testing a long double even when not configured with
long doubles (assuming long doubles are at least available).

So the better part of valor is to say we don't have it and use the
fallback.  Gets t/op/infnan.t #13 passing.

8 years agoObsolete comment in sv.c:utf8_mg_pos_cache_update
Father Chrysostomos [Sat, 13 Sep 2014 19:54:07 +0000 (12:54 -0700)]
Obsolete comment in sv.c:utf8_mg_pos_cache_update

ab8be49d3 added this comment and the SvPOKp check.  Half the comment
is not relevant any more, since we stopped caching UTF8 offsets on
references in commit d91e94e1ac8.  The SvPOKp check is still a good
idea, though.

$ perl5.14.4 -e 'use overload q|""| => sub { "\x{100}" }; $_ = bless[]; $__ = substr $_,0,1; use Devel::Peek; Dump $_'
SV = PVMG(0x7fb2f2856738) at 0x7fb2f283a348
  REFCNT = 1
  IV = 0
  NV = 0
  RV = 0x7fb2f2806d00
  SV = PVAV(0x7fb2f2807ec0) at 0x7fb2f2806d00
    REFCNT = 1
    STASH = 0x7fb2f2806b68 "main"
    ARRAY = 0x0
    FILL = -1
    MAX = -1
    ARYLEN = 0x0
    FLAGS = (REAL)
  PV = 0x7fb2f2806d00 "" [UTF8 ""]
  CUR = 0
  LEN = 0
  MAGIC = 0x7fb2f240f708
    MG_VIRTUAL = &PL_vtbl_utf8
    MG_TYPE = PERL_MAGIC_utf8(w)
    MG_LEN = 1
$ perl5.18.1 -e 'use overload q|""| => sub { "\x{100}" }; $_ = bless[]; $__ = substr $_,0,1; use Devel::Peek; Dump $_'
SV = IV(0x7fc048837c40) at 0x7fc048837c50
  REFCNT = 1
  RV = 0x7fc0488060e8
  SV = PVAV(0x7fc048807e80) at 0x7fc0488060e8
    REFCNT = 1
    STASH = 0x7fc048805f50 "main"
    ARRAY = 0x0
    FILL = -1
    MAX = -1
    ARYLEN = 0x0
    FLAGS = (REAL)

8 years agotoke.c: Remove redundant PL_expect check
Father Chrysostomos [Sat, 13 Sep 2014 19:13:29 +0000 (12:13 -0700)]
toke.c: Remove redundant PL_expect check

PL_expect is only ever XREF when we already know there is an open
brace.  So we would never even get to this code path.

8 years agoUpdate IO-Socket-IP to CPAN version 0.32
Chris 'BinGOs' Williams [Sat, 13 Sep 2014 18:44:08 +0000 (19:44 +0100)]
Update IO-Socket-IP to CPAN version 0.32


0.32    2014/09/12 10:11:27
         * Implementation of Timeout for ->connect (RT92075)

8 years agoMake the link not a link.
Jarkko Hietaniemi [Sat, 13 Sep 2014 16:52:12 +0000 (12:52 -0400)]
Make the link not a link.

8 years agoMention inf/nan and POSIX C99 math improvements.
Jarkko Hietaniemi [Sat, 13 Sep 2014 15:32:16 +0000 (11:32 -0400)]
Mention inf/nan and POSIX C99 math improvements.

8 years agoSemicolon before ellipsis inside block disambiguates.
James E Keenan [Sat, 13 Sep 2014 12:51:48 +0000 (08:51 -0400)]
Semicolon before ellipsis inside block disambiguates.

Correct documentation which indicated that, inside a block, a semicolon after
an ellipsis statement would disambiguate between a block and a hash reference
constructor.  The semicolon must precede the ellipsis to perform this

Add tests to demonstrate that whitespace around the ellipsis statement does
not impeded the disambiguation.  Add perldelta entry.

For: RT #122661

8 years agoAdd perldelta entry for 8a384d3a99 (ParseXS and locales).
James E Keenan [Sat, 13 Sep 2014 13:25:53 +0000 (09:25 -0400)]
Add perldelta entry for 8a384d3a99 (ParseXS and locales).

8 years agoUse HAS_ISFINITE for Perl_isfinitel.
Jarkko Hietaniemi [Sat, 13 Sep 2014 11:57:12 +0000 (07:57 -0400)]
Use HAS_ISFINITE for Perl_isfinitel.

8 years agoHAS_C99 comment tweak.
Jarkko Hietaniemi [Sat, 13 Sep 2014 11:55:27 +0000 (07:55 -0400)]
HAS_C99 comment tweak.

8 years agoNeed to have frexpl for long doubles.
Jarkko Hietaniemi [Sat, 13 Sep 2014 11:38:59 +0000 (07:38 -0400)]
Need to have frexpl for long doubles.

8 years agoconcise-xs.t is overly chummy with B::Deparse
Father Chrysostomos [Sat, 13 Sep 2014 07:09:30 +0000 (00:09 -0700)]
concise-xs.t is overly chummy with B::Deparse

8 years agoIncrease $B::Deparse::VERSION to 1.28
Father Chrysostomos [Fri, 12 Sep 2014 20:38:42 +0000 (13:38 -0700)]
Increase $B::Deparse::VERSION to 1.28

8 years Don’t call $lop->name repeatedly
Father Chrysostomos [Sat, 13 Sep 2014 06:37:28 +0000 (23:37 -0700)] Don’t call $lop->name repeatedly

because it’s inefficient.

8 years agoDeparse typed vars
Father Chrysostomos [Sat, 13 Sep 2014 06:35:35 +0000 (23:35 -0700)]
Deparse typed vars

8 years agoDeparse our(LIST) correctly
Father Chrysostomos [Sat, 13 Sep 2014 06:33:57 +0000 (23:33 -0700)]
Deparse our(LIST) correctly

It was coming out like this:

our($main::foo, $main::bar, $main::baz);

8 years agopp_ctl.c: Remove junk from #endif
Father Chrysostomos [Sat, 13 Sep 2014 04:46:05 +0000 (21:46 -0700)]
pp_ctl.c: Remove junk from #endif

What was I thinking?

8 years agoMathomise save_re_context
Father Chrysostomos [Sat, 13 Sep 2014 04:45:33 +0000 (21:45 -0700)]
Mathomise save_re_context

at Jarkko’s suggestion.

8 years agopp_ctl.c: Remove PL_curcop assignment
Father Chrysostomos [Sat, 13 Sep 2014 03:22:27 +0000 (20:22 -0700)]
pp_ctl.c: Remove PL_curcop assignment

This was added years ago in commit 7fb6a879.  Now that save_re_context
does nothing (and die_unwind no longer even calls it), we don’t need to
assign to PL_curcop.  In the case where it matters, that is, the implicit
eval scope that require provides, the values of PL_curcop and oldcop
should always be the same.

8 years agoutf8.c: Move an #ifndef for clarity
Father Chrysostomos [Fri, 12 Sep 2014 23:34:40 +0000 (16:34 -0700)]
utf8.c: Move an #ifndef for clarity

The comment really belongs inside it, as it refers to those two
lines of code.

8 years agoRemove obsolete comment from utf8.c
Father Chrysostomos [Fri, 12 Sep 2014 23:33:54 +0000 (16:33 -0700)]
Remove obsolete comment from utf8.c

The call to save_re_context was removed by the previous commit.  The
commit before that stopped save_re_context from doing anything.

Commit db2c6cb33 stopped the errsv_save line from triggering

So this comment, added in dc0c6abb4, no longer applies.

8 years agoDon’t call save_re_context
Father Chrysostomos [Fri, 12 Sep 2014 23:22:03 +0000 (16:22 -0700)]
Don’t call save_re_context

It is an empty function.

8 years agoGut Perl_save_re_context
Father Chrysostomos [Fri, 12 Sep 2014 22:39:39 +0000 (15:39 -0700)]
Gut Perl_save_re_context

What it does is not longer necessary.  See ticket #122747 and
commits 2c1f00b90 and 7d75537e.

The only CPAN module using this function, XML::Fast, passes its tests
with this change.

8 years agoexpl will not be used if long double is double.
Jarkko Hietaniemi [Fri, 12 Sep 2014 14:45:39 +0000 (10:45 -0400)]
expl will not be used if long double is double.

(found in arm-linux)

8 years agoThe space computation for hexfp was overovershooting.
Jarkko Hietaniemi [Fri, 12 Sep 2014 12:34:07 +0000 (08:34 -0400)]
The space computation for hexfp was overovershooting.

8 years agoComment tweak for HAS_C99.
Jarkko Hietaniemi [Fri, 12 Sep 2014 11:17:01 +0000 (07:17 -0400)]
Comment tweak for HAS_C99.

8 years agoUse the multiplication test instead of the DBL_MAX/LDBL_MAX.
Jarkko Hietaniemi [Fri, 12 Sep 2014 11:24:15 +0000 (07:24 -0400)]
Use the multiplication test instead of the DBL_MAX/LDBL_MAX.

Comparing to decimal float constants feels unclean.

8 years agoPerl_isfinitel should not use the fpclass macross blindly.
Jarkko Hietaniemi [Fri, 12 Sep 2014 11:01:41 +0000 (07:01 -0400)]
Perl_isfinitel should not use the fpclass macross blindly.

(Whether the macros are safe for long doubles, is complicated.)

8 years agoPorting/ - Tidy up @IGNORABLE
Steve Hay [Fri, 12 Sep 2014 08:26:27 +0000 (09:26 +0100)]
Porting/ - Tidy up @IGNORABLE

8 years agoScalar-List-Utils has been upgraded from version 1.40 to 1.41
Steve Hay [Fri, 12 Sep 2014 08:23:00 +0000 (09:23 +0100)]
Scalar-List-Utils has been upgraded from version 1.40 to 1.41

This incorporates ca81d15134, which was naughtily not listed as a

8 years agoUpgrade ExtUtils::CBuilder from version 0.280217 to 0.280219
Steve Hay [Fri, 12 Sep 2014 08:22:12 +0000 (09:22 +0100)]
Upgrade ExtUtils::CBuilder from version 0.280217 to 0.280219

8 years agoUpgrade CPAN::Meta::Requirements from version 2.126 to 2.128
Steve Hay [Fri, 12 Sep 2014 08:05:23 +0000 (09:05 +0100)]
Upgrade CPAN::Meta::Requirements from version 2.126 to 2.128

8 years agoMore ways to Perl_isfinitel.
Jarkko Hietaniemi [Fri, 12 Sep 2014 02:41:28 +0000 (22:41 -0400)]
More ways to Perl_isfinitel.

8 years agoUnfinished business from e4c957f4.
Jarkko Hietaniemi [Fri, 12 Sep 2014 02:39:42 +0000 (22:39 -0400)]
Unfinished business from e4c957f4.

8 years agoUse -fstack-protector-strong, if available.
Jarkko Hietaniemi [Fri, 12 Sep 2014 01:19:07 +0000 (21:19 -0400)]
Use -fstack-protector-strong, if available.

In preference to just -fstack-protector. gcc 4.8.x? gcc 4.9, definitely.

(FWIW, users include at least Google Chrome, Fedora 20, Ubuntu)

8 years agolong double / NV schizophrenia continues.
Jarkko Hietaniemi [Fri, 12 Sep 2014 00:27:48 +0000 (20:27 -0400)]
long double / NV schizophrenia continues.

8 years agoHave a Perl_isfinitel() separate from USE_LONG_DOUBLE.
Jarkko Hietaniemi [Thu, 11 Sep 2014 22:37:55 +0000 (18:37 -0400)]
Have a Perl_isfinitel() separate from USE_LONG_DOUBLE.

(Also correct uses of HAS_C99.)

8 years agoperl #122747: localize PL_curpm to null in _core_swash_init
Yves Orton [Thu, 11 Sep 2014 19:55:08 +0000 (21:55 +0200)]
perl #122747: localize PL_curpm to null in _core_swash_init

Set PL_curpm to null before we do any swash intialization
in _core_swash_init(). This "hides" the current regop from the
swash code, with the intent of prevent weird reentrancy bugs
when the swashes are initialized.

Long term you could argue that we should just not use the regex
engine to initialize a swash, and then this would be unnecessary.

Thanks to FC for the suggestion!

8 years agoWrap long pod lines in B::Op_private for real
Father Chrysostomos [Thu, 11 Sep 2014 06:51:24 +0000 (23:51 -0700)]
Wrap long pod lines in B::Op_private for real

I forgot to re-run podcheck.t with PERL_POD_PEDANTIC set last time.

8 years agoperldiag: Rewrap for better splain output
Father Chrysostomos [Thu, 11 Sep 2014 06:18:30 +0000 (23:18 -0700)]
perldiag: Rewrap for better splain output

Also correct C<(...)> when it should be (C<...>).

8 years agoUpdate rv2cv flags comment following 211a4342c9
Father Chrysostomos [Wed, 10 Sep 2014 23:46:56 +0000 (16:46 -0700)]
Update rv2cv flags comment following 211a4342c9

8 years agoAlso protect against elen < 0.
Jarkko Hietaniemi [Wed, 10 Sep 2014 23:42:38 +0000 (19:42 -0400)]
Also protect against elen < 0.

8 years agoNote where B::Op_private’s pod is to be edited
Father Chrysostomos [Wed, 10 Sep 2014 23:11:52 +0000 (16:11 -0700)]
Note where B::Op_private’s pod is to be edited

8 years agoWrap long lines in B::Op_private pod
Father Chrysostomos [Wed, 10 Sep 2014 23:06:47 +0000 (16:06 -0700)]
Wrap long lines in B::Op_private pod

8 years agoIncrease $IO::VERSION to 1.34
Father Chrysostomos [Wed, 10 Sep 2014 21:06:01 +0000 (14:06 -0700)]
Increase $IO::VERSION to 1.34

8 years agoIO.xs: OP_SIBLING is too new
Father Chrysostomos [Wed, 10 Sep 2014 21:05:16 +0000 (14:05 -0700)]
IO.xs: OP_SIBLING is too new

and IO is living a double life, so we must #define it for older

8 years agoundef doesn't accept args for macros.
Jarkko Hietaniemi [Wed, 10 Sep 2014 18:50:32 +0000 (14:50 -0400)]
undef doesn't accept args for macros.

8 years agodarwin data sections can have wild prefixes and suffixes.
Jarkko Hietaniemi [Wed, 10 Sep 2014 18:02:44 +0000 (14:02 -0400)]
darwin data sections can have wild prefixes and suffixes.

8 years agoRemove obsolete comment.
Jarkko Hietaniemi [Wed, 10 Sep 2014 15:40:05 +0000 (11:40 -0400)]
Remove obsolete comment.

8 years agoUse the Perl_ math in time64.c, too.
Jarkko Hietaniemi [Wed, 10 Sep 2014 15:25:58 +0000 (11:25 -0400)]
Use the Perl_ math in time64.c, too.

8 years agoNo need to print an int as a %0.f
Jarkko Hietaniemi [Wed, 10 Sep 2014 15:18:04 +0000 (11:18 -0400)]
No need to print an int as a %0.f

The note about %lld being broken is probably quite obsolete.

8 years agohexfp: Fix zero in IEEE 754 quadruples, cleanups, safety.
Jarkko Hietaniemi [Wed, 10 Sep 2014 13:42:00 +0000 (09:42 -0400)]
hexfp: Fix zero in IEEE 754 quadruples, cleanups, safety.

Cleanups: define auxiliary symbols depending on what kind of
long doubles we have, making the code itself somewhat less noisy.

Safety: for double-double the overflow checks were wrong since
the maximum number of bits (and therefore result) is much larger.

8 years ago[MERGE] add regen/op_private and B::Op_private
David Mitchell [Wed, 10 Sep 2014 13:32:25 +0000 (14:32 +0100)]
[MERGE] add regen/op_private and B::Op_private

The series of commits in this branch automate the generation of the
defines, labels etc of op_private flags.

8 years agoadd missing op_private labels to Concise etc
David Mitchell [Fri, 5 Sep 2014 16:40:07 +0000 (17:40 +0100)]
add missing op_private labels to Concise etc

Concise wasn't decoding a few op_private bits. I spotted this during my
jumbo regen/op_private commit, but deferred fixing them up to a separate
commit since they change the output expected in a bunch of Concise tests.

Specifically, these have now been added:

    OPpITER_DEF          => DEF

8 years agoAssert valid op_private bits in op_free()
David Mitchell [Fri, 5 Sep 2014 16:12:27 +0000 (17:12 +0100)]
Assert valid op_private bits in op_free()

On debugging builds, when freeing an op, check that that there are
no bits set in op_private that we're not aware of (as defined by

If breakage is bisected to this commit, it either means that something
should be added to regen/op_private (if the op having that bit set is in
fact legitimate), or fixing the op generation code if not.

8 years agomask VMS hints bits in COPs
David Mitchell [Fri, 5 Sep 2014 16:06:47 +0000 (17:06 +0100)]
mask VMS hints bits in COPs

A couple of VMS-specific hints bits are stored in op_private on COPs.
Currently these are added using NATIVE_HINTS, which is defined as
PL_hints >> 24.
Since other hints have started using the top byte of PL_hints, this
has the possibility of inadvertently setting other bits in cop->op_private.
So mask out the bits we don't want. We need this before the next commit,
which will assert valid bits on debugging builds.

(This is VMS-specific, and has been applied blind)

8 years agoAutomate processing of op_private flags
David Mitchell [Tue, 2 Sep 2014 16:11:42 +0000 (17:11 +0100)]
Automate processing of op_private flags

Add a new config file, regen/op_private, which contains all the
information about the flags and descriptions for the OP op_private field.

Previously, the flags themselves were defined in op.h, accompanied by
textual descriptions (sometimes inaccurate or incomplete).

For display purposes, there were short labels for each flag found in, and another set of labels for Perl_do_op_dump() in dump.c.
These two sets of labels differed from each other in spelling (e.g.
REFC verses REFCOUNT), and differed in completeness and accuracy.

With this commit, all the data to generate the defines and the labels is
derived from a single source, and are generated automatically by 'make
regen'. It also contains complete data on which bits are used for what by
each op. So any attempt to add a new flag for a particular op where that
bit is already in use, will raise an error in make regen.  This compares
to the previous practice of reading the descriptions in op.h and hoping
for the best.

It also makes use of data in regen/opcodes: for example, regen/op_private
specifies that all ops flagged as 'T' get the OPpTARGET_MY flag.

Since the set of labels used by Concise and Perl_do_op_dump() differed,
I've standardised on the Concise version. Thus this commit changes the
output produced by Concise only marginally, while Perl_do_op_dump() is
considerably different. As well as the change in labels (and missing
labels), Perl_do_op_dump() formerly had a bug whereby any unrecognised
bits would not be shown if there was at least one recognised bit.
So while Concise displayed (and still does) "LVINTRO,2", Perl_do_op_dump()
has changed:

    + PRIVATE = (LVINTRO,0x2)

Concise has mainly changed in that a few op/bit combinations weren't being
shown symbolically, and now are. I've avoiding fixing the ones that would
break tests; they'll be fixed up in the next few commits.

A few new OPp* flags have been added:


The last three are analogues for existing HINT_* flags. The former four
reflect that many ops some of the lower few bits of op_private to indicate
how many args the op expects. While (for now) this is still displayed as,
e.g. "LVINTRO,2", the definitions in regen/op_private now fully account
for which ops use which bits for the arg count.

There is a new module, B::Op_private, which allows this new data to be
accessed from Perl. For example,

    use B::Op_private;
    my $name  = $B::Op_private::bits{aelem}{7}; # OPpLVAL_INTRO
    my $value = $B::Op_private::defines{$name}; # 128
    my $label = $B::Op_private::labels{$name};  # LVINTRO

There are several new constant PL_* tables. PL_op_private_valid[]
specifies for each op number, which bits are valid for that op. In a
couple of commits' time, op_free() will use this on debugging builds to
assert that no ops gained any private flags which we don't know about.
In fact it was by using such a temporary assert repeatedly against the
test suite, that I tracked down most of the inconsistencies and errors in
the current flag data.

The other PL_op_private_* tables contain a compact representation of all
the ops/bits/labels in a format suitable for Perl_do_op_dump() to decode
Op_private. Overall, the perl binary is about 500 bytes smaller on my

8 years agobetter document OA_ flags
David Mitchell [Thu, 21 Aug 2014 19:16:48 +0000 (20:16 +0100)]
better document OA_ flags

Its a bit confusing which bits in PL_opargs are used for what,
and which flags in regen/opcodes map to which OA_* value

8 years agofix 'make' header dependency generation
David Mitchell [Wed, 10 Sep 2014 13:10:06 +0000 (14:10 +0100)]
fix 'make' header dependency generation

'make depend' was being run before build-time generated headers
were created (with generate_uudmap). This meant that the 'cc -E' which the
dependency analysis ran would fail for some source files, since it
couldn't find some of the headers. It would thus fail to find any further
dependencies for that file after that point.

In particular, globals.o wasn't being marked as dependent on opcode.h,
even though opcode.h contains the definitions of some global vars.

The fix is simple. Make the 'depend' target depend on $(generated_headers).

8 years agoregen after backport truncl probe
H.Merijn Brand [Wed, 10 Sep 2014 06:36:13 +0000 (08:36 +0200)]
regen after backport truncl probe

+ fix copy/paste miss in Glossary

8 years agoop.c: ck_rvconst: Remove ‘double’ gv lookup
Father Chrysostomos [Wed, 10 Sep 2014 05:51:38 +0000 (22:51 -0700)]
op.c: ck_rvconst: Remove ‘double’ gv lookup

I put double in quotes because this gv lookup only happens once.

I tried commenting out the loop and leaving just the body.  All tests
passed.  Then I tried leaving the loop, but asserting that it only
iterates once.  All tests passed.

The arguments to gv_fetchsv are such that it will always add a glob
and return it, so the !gv condition always evaluates to false.  (The
glob is not added when noexpand is true, but the loop condition con-
tains !noexpand to prevent a second iteration in that case.)

8 years agoIncrease $overload::VERSION to 1.23
Father Chrysostomos [Wed, 10 Sep 2014 02:25:47 +0000 (19:25 -0700)]
Increase $overload::VERSION to 1.23

8 years agoRemove redundant check from
Father Chrysostomos [Wed, 10 Sep 2014 02:22:30 +0000 (19:22 -0700)]
Remove redundant check from

I added this in ca6102577e.  It is silly to check ref $sub a few
lines after $sub = \&....

8 years agoComment tweaks.
Jarkko Hietaniemi [Wed, 10 Sep 2014 01:08:44 +0000 (21:08 -0400)]
Comment tweaks.

8 years agoWhitespace only.
Jarkko Hietaniemi [Wed, 10 Sep 2014 01:02:30 +0000 (21:02 -0400)]
Whitespace only.

I cannot stand looking at the inconsistent spaces any more.

8 years agoFloating point should always output more than nothing.
Jarkko Hietaniemi [Wed, 10 Sep 2014 00:26:44 +0000 (20:26 -0400)]
Floating point should always output more than nothing.

8 years agoIf USE_LONG_DOUBLE, NVff is PERL_PRIldbl.
Jarkko Hietaniemi [Wed, 10 Sep 2014 00:25:16 +0000 (20:25 -0400)]

8 years agohexfp: 0 is 0x0p+0.
Jarkko Hietaniemi [Wed, 10 Sep 2014 00:22:00 +0000 (20:22 -0400)]
hexfp: 0 is 0x0p+0.

8 years agoSeparate S_my_atof_infnan().
Jarkko Hietaniemi [Wed, 10 Sep 2014 00:20:33 +0000 (20:20 -0400)]
Separate S_my_atof_infnan().

8 years agoPOSIX math: log1p is more subtle.
Jarkko Hietaniemi [Wed, 10 Sep 2014 00:15:09 +0000 (20:15 -0400)]
POSIX math: log1p is more subtle.

-Inf on -1, NaN on < -1.

8 years agoRename the 'nv' as 'fv' since it's not NV.
Jarkko Hietaniemi [Tue, 9 Sep 2014 23:32:19 +0000 (19:32 -0400)]
Rename the 'nv' as 'fv' since it's not NV.

To avoid constant confusion.  It actually most of the time explicitly
a "long double".

8 years agoPOSIX math: log1p (emulation) needs arg > -1.0.
Jarkko Hietaniemi [Tue, 9 Sep 2014 20:44:44 +0000 (16:44 -0400)]
POSIX math: log1p (emulation) needs arg > -1.0.

8 years agoComment tweaks.
Jarkko Hietaniemi [Tue, 9 Sep 2014 20:42:23 +0000 (16:42 -0400)]
Comment tweaks.

8 years agoSort the Perl_ math wrappers for easier eyeballing.
Jarkko Hietaniemi [Tue, 9 Sep 2014 20:30:24 +0000 (16:30 -0400)]
Sort the Perl_ math wrappers for easier eyeballing.

8 years agoPOSIX math: log1p emulation was wrong.
Jarkko Hietaniemi [Tue, 9 Sep 2014 17:02:19 +0000 (13:02 -0400)]
POSIX math: log1p emulation was wrong.

While at it, add quartic term to both expm1 and log1p.

8 years agoSkip warnable const folding outside warnings scope
Father Chrysostomos [Tue, 9 Sep 2014 13:13:43 +0000 (06:13 -0700)]
Skip warnable const folding outside warnings scope

Constant folding is not supposed to warn.  If it would produce a warn-
ing, then it is skipped and the warning is deferred to run time.

This means the -w flag can affect constant folding:

$ ./perl -Ilib -MO=Concise -le 'use constant u=>undef; $a = u+1'
6  <@> leave[1 ref] vKP/REFC ->(end)
1     <0> enter ->2
2     <;> nextstate(main 132 -e:1) v:{ ->3
5     <2> sassign vKS/2 ->6
3        <$> const[NV 1] s/FOLD ->4
-        <1> ex-rv2sv sKRM*/1 ->5
4           <#> gvsv[*a] s ->5
-e syntax OK
$ ./perl -Ilib -MO=Concise -lwe 'use constant u=>undef; $a = u+1'
8  <@> leave[1 ref] vKP/REFC ->(end)
1     <0> enter ->2
2     <;> nextstate(main 132 -e:1) v:{ ->3
7     <2> sassign vKS/2 ->8
5        <2> add[t2] sK/2 ->6
3           <$> const[NULL ] s*/FOLD ->4
4           <$> const[PVNV 1] s ->5
-        <1> ex-rv2sv sKRM*/1 ->7
6           <#> gvsv[*a] s ->7
-e syntax OK

But the problem here is that the flag could be turned on at run time,
so if the folding happens because -w is off, then the behaviour
changes due to folding.  It’s fine to do the folding here only when
warnings are lexically disabled, as that overrides any setting of -w.

8 years agoRename S_infnan_copy as S_infnan_2pv.
Jarkko Hietaniemi [Tue, 9 Sep 2014 13:51:44 +0000 (09:51 -0400)]
Rename S_infnan_copy as S_infnan_2pv.

8 years agoAdd gtags and ctags files into .gitignore
Jarkko Hietaniemi [Tue, 9 Sep 2014 12:32:26 +0000 (08:32 -0400)]
Add gtags and ctags files into .gitignore

8 years ago[perl #122728] Make sub(){undef} inlinable
Father Chrysostomos [Tue, 9 Sep 2014 05:54:10 +0000 (22:54 -0700)]
[perl #122728] Make sub(){undef} inlinable

8 years agoStop barewords from trumping subs with (*) proto
Father Chrysostomos [Tue, 9 Sep 2014 05:37:46 +0000 (22:37 -0700)]
Stop barewords from trumping subs with (*) proto

The splat prototype was allowing barewords to take precedence over
sub calls, if those sub calls did not parenthesize the argument list.

But it was rather buggy and inconsistent:

$ perl -le 'sub splat(*){print @_} sub foo; splat main::foo'

What happened to main::?

$ perl -le 'package Foo; sub splat(*){print @_} sub foo; splat foo'

Where did the prefix come from?

And constant subroutines were exempt from this, but whether a subrou-
tine is constant may change between versions:

$ perl5.14.4 -le 'sub splat(*){print @_} sub foo(){"x"x3}; splat foo'
$ perl5.18.1 -le 'sub splat(*){print @_} sub foo(){"x"x3}; splat foo'

because infix x is now subject to constant folding.


$ perl5.18.1 -le 'sub splat(*){print @_} BEGIN {$::{foo}=*bar}sub bar; splat foo'

I know this is a naughty example, because it’s fiddling with the sym-
bol table, but if the splat gets confused by that, then something is
quite wrong with its implementation.

Furthermore, one of the stated purposes of prototypes is to enable
custom subroutines to mimic the syntax of built-in functions.  But
*all* the built-in functions that take filehandles allow subroutines
to take precedence over barewords.

This commit allows all subroutines as arguments to the * prototype
to take precedence over barewords, just as constant subroutines
have till now.

This also fixes #35129, because the mechanism that was accidentally
swallowing arguments is now gone.

8 years agoGet mkdir.t working under miniperl *again*
Father Chrysostomos [Tue, 9 Sep 2014 03:15:58 +0000 (20:15 -0700)]
Get mkdir.t working under miniperl *again*

In commit ca7cc9e26e, I got mkdir.t to pass under miniperl when has not been generated yet.

The way I did it, though, causes the test to fail under miniperl if *has* been generated.  The ‘require’ call that tests to
see whether Errno can load ends up resetting $! before we test the
value in %!.

Also, we don’t need require inside a string eval.