summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* add new release to perlhistv5.23.2Matthew Horsfall2015-08-201-0/+1
|
* Finalize perldeltaMatthew Horsfall2015-08-201-55/+69
|
* Add .gitignore for ext/re/ generated header fileMatthew Horsfall2015-08-201-0/+3
|
* Update Module::CoreList for 5.23.2Matthew Horsfall2015-08-201-1/+27
|
* Update list of files to clean for ceab18aaa.Matthew Horsfall2015-08-201-1/+1
|
* Let Porting/makerel know about overload.c's rename to overload.incMatthew Horsfall2015-08-201-1/+1
|
* Update versions in INSTALL.Matthew Horsfall2015-08-201-2/+2
|
* perldelta updates for 5.23.2.Matthew Horsfall2015-08-201-181/+71
|
* b992490d copied wrong for ext re.Jarkko Hietaniemi2015-08-201-5/+5
| | | | | | This has been magically working since ext re builds with -I../.., and so picks up the inline headers from the top, the copied bogus file has been left unused.
* [perl #125669] op/pack.t failures with PPC long double (double double) buildsSisyphus2015-08-201-1/+12
| | | | unpack '%65...' failures, to be more exact.
* perldelta for 668fcfea6, a1e27170fTony Cook2015-08-201-0/+13
|
* [perl 125760] fix new (and one old test) to pass with PERL_UNICODETony Cook2015-08-201-7/+8
|
* Update Term-Cap to CPAN version 1.17Chris 'BinGOs' Williams2015-08-192-52/+15
| | | | | | | | | | | | | | | [DELTA] 1.16: Sat 5 Apr 10:19:35 BST 2014 - Make last resort actually work from drm00 - Removed change log from Cap.pm 1.17-RC1: Wed 1 Jul 10:30:15 BST 2015 - Fix regression caused by last resort change - Add support for capabilities of more than 2 characters 1.17: Mon 17 Aug 08:30:54 BST 2015 - No changes version bounce
* ck_refassign: selectively copy OPpPAD_INTRO/STATEDavid Mitchell2015-08-192-1/+16
| | | | | | | | | | | | | | | Previously this function unconditionally copied the OPpLVAL_INTRO and OPpPAD_STATE flags from the LH var op to the refassign op, even when those flag bits weren't used or meant something different. This commit makes the copying more selective. It also makes clear by code comments and asserts, that the refassign op uses bit 6, OPpPAD_STATE, to mean either that or OPpOUR_INTRO depending on the type of LHS. I couldn't think of any test that would would break under the old regime, but this future-proofs the code against new flags and meanings.
* t/perf/benchmarks: 5.004 compatDavid Mitchell2015-08-191-20/+20
| | | | | | | | make the tests in the benchmark file be compilable back to 5.004_05. (To go further back, it would need to avoid package names that start with digits, such as 'call::sub::3_args'). Basically avoid // and our.
* [perl #125467] mingw-w64 has movedTony Cook2015-08-191-4/+4
|
* [perl #125826] make the buffer large enough in TRIE_STORE_REVCHARTony Cook2015-08-192-1/+10
| | | | | Since the SV is discarded almost immediately (in non-DEBUGGING builds) don't worry about making it the smallest possible size.
* mktables: Add code point ages to --annotate optionKarl Williamson2015-08-183-5/+30
| | | | This can be useful information.
* disallow nested declarations [perl #125587] [perl #121058]Lukas Mai2015-08-184-2/+60
|
* Also ignore CONTRIBUTING.md for dual-life modulesH.Merijn Brand2015-08-181-5/+6
| | | | The .md extension has become more and more standard on github
* [perl #125781] handle range overflow when Size_t is smaller than IVTony Cook2015-08-181-1/+5
|
* Clarify functioning of '||' operator.Ludovic E. R. Tolhurst-Cleaver2015-08-172-3/+4
| | | | | | | | Follow wording from Camel book, 4th ed., p. 120, per suggestion by Ludovic E. R. Tolhurst-Cleaver. Add Ludovic E. R. Tolhurst-Cleaver to AUTHORS. For: RT #125802
* [perl #120826] - Fix documentation nit (thanks Eric Brine.)Matthew Horsfall2015-08-171-1/+1
|
* [MERGE] re-implement OPpASSIGN_COMMON mechanismDavid Mitchell2015-08-1731-620/+1887
|\
| * fix a SV_NOSTEAL issue in pp_aassignDavid Mitchell2015-08-172-3/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | | in something like (...) = (f())[0,0] A mortal SV can appear multiple times on the RHS without being reference counted. If it's a string, the temptation is to steal its string buffer during the first copy; but this would make the second usage undef. pp_aassign() already takes account of this and uses the SV_NOSTEAL flag when copying - except that one common code path didn't. This commit fixes that, adds more tests, and adds more code comments to explain the issue.
| * fix PAD_COMPNAME_GEN documentationDavid Mitchell2015-08-171-3/+2
| | | | | | | | The generation number is no longer stored in the SvUVX() field
| * document what PL_generation is forDavid Mitchell2015-08-171-1/+2
| |
| * Eliminate GvASSIGN_GENERATION and _set macrosDavid Mitchell2015-08-171-5/+0
| | | | | | | | | | Since we no longer scan package vars with PL_generation for OPpASSIGN_COMMON* purposes, eliminate the macros used for that purpose.
| * Optimise 1 arg in list assignDavid Mitchell2015-08-174-17/+66
| | | | | | | | | | | | | | Avoid setting common scalar flags in these cases: ($x) = (...); (...) = ($x);
| * Eliminate PL_sawalias, GPf_ALIASED_SVDavid Mitchell2015-08-1713-78/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | These two commits: v5.21.3-759-gff2a62e "Skip no-common-vars optimisation for aliases" v5.21.4-210-gc997e36 "Make list assignment respect foreach aliasing" added a run-time mechanism to detect aliased package variables, by either "*pkg = ...," or "for $pkg (...)", and used that information to enable the OPpASSIGN_COMMON mechanism at runtime for detecting common elements in a list assign, e.g. for $alias ($a, ...) { ($a,$b) = (1,$alias); } The previous commit but one changed the OPpASSIGN_COMMON mechanism such that it no longer uses PL_sawalias. So this var and the mechanism for setting it can now be removed. This commit removes: * the PL_sawalias variable * the GPf_ALIASED_SV GP flag * the SAVEt_GP_ALIASED_SV and save_aliased_sv() save type.
| * make my (...) = @_ non-OPpASSIGN_COMMON_RC1David Mitchell2015-08-174-6/+61
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Technically in my ($scalar,...) = @_ due to closure/goto tricks, its possible for $scalar to appear on both the LHS and RHS, so we currently set the OPpASSIGN_COMMON_RC1 flag. However, this imposes extra overhead; for example 5% extra instruction reads and 11% extra conditional branches for my ($x,$y,$z) = @_; Given what an important construct this is, disable this flag in the specific case of of only my's on the LHS and only @_ on the RHS. It's technically incorrect, but its the same behaviour we've always had (it was only the previous commit which made it safe but slower). We still set the OPpASSIGN_COMMON_AGG flag for my ($...,@a) = @_ since in the normal case this only adds the small additional runtime overhead of checking that @a is already empty.
| * re-implement OPpASSIGN_COMMON mechanismDavid Mitchell2015-08-1721-537/+1734
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit almost completely replaces the current mechanism for detecting and handing common vars in list assignment, e.g. ($a,$b) = ($b,$a); In general outline: it creates more false positives at compile-time than before, but also no longer misses some false negatives. In compensation, it considerably reduces the run-time cost of handling potential and real commonality. It does this firstly by splitting the OPpASSIGN_COMMON flag into 3 separate flags: OPpASSIGN_COMMON_AGG OPpASSIGN_COMMON_RC1 OPpASSIGN_COMMON_SCALAR which indicate different classes of commonality that can be handled in different ways at runtime. Most importantly, it distinguishes between two basic cases. Firstly, common scalars (OPpASSIGN_COMMON_SCALAR), e.g. ($x,....) = (....,$x,...) where $x is modified and then sometime later its value is used again, but that value has changed in the meantime. In this case, we need replace such vars on the RHS with mortal copies before processing the assign. The second case is an aggregate on the LHS (OPpASSIGN_COMMON_AGG), e.g. (...,@a) = (...., $a[0],...) In this case, the issue is instead that when @a is cleared, it may free items on the RHS (due to the stack not being ref counted). What is required here is that rather than making of a copy of each RHS element and storing it in the array as we progress, we make *all* the copies *before* clearing the array, but mortalise them in case we die in the meantime. We can further distinguish two scalar cases; sometimes it's possible to confirm non-commonality at run-time merely by checking that all the LHS scalars have a reference count of 1. If this is possible, we set the OPpASSIGN_COMMON_RC1 flag rather than the OPpASSIGN_COMMON_SCALAR flag. The major improvement in the run-time performance in the OPpASSIGN_COMMON_SCALAR case (or OPpASSIGN_COMMON_RC1 if rc>1 scalars are detected), is to use a mark-and-sweep scan of the two lists using the SVf_BREAK flag, to determine which elements are common, and only make mortal copies of those elements. This has a very big effect on run-time performance; for example in the classic ($a,$b) = ($b,$a); it would formerly make temp copies of both $a and $b; now it only copies $a. In more detail, the mark and sweep mechanism in pp_aassign works by looping through each LHS and RHS SV pair in parallel. It temporarily marks each LHS SV with the SVf_BREAK flag, then makes a copy of each RHS element only if it has the SVf_BREAK flag set. When the scan is finished, the flag is unset on all LHS elements. One major change in compile-time flagging is that package scalar vars are now treated as if they could always be aliased. So we don't bother any more to do the compile-time PL_generation checking on package vars (we still do it on lexical vars). We also no longer make use of the run-time PL_sawalias mechanism for detecting aliased package vars (and indeed the next commit but one will remove that mechanism). This means that more list assignment expressions which feature package vars will now need to do a runtime mark-and-sweep (or where appropriate, RC1) test. In compensation, we no longer need to test for aliasing and set PL_sawalias in pp_gvsv and pp_gv, nor reset PL_sawalias in every pp_nextstate. Part of the reasoning behind this is that it's nearly impossible to detect all possible package var aliasing; for example PL_sawalias would fail to detect XS code doing GvSV(gv) = sv. Note that we now scan the two children of the OP_AASSIGN separately, and in particular we mark lexicals with PL_generation only on the LHS and test only on the RHS. So something like ($x,$y) = ($default, $default) will no longer be regarded as having common vars. In terms of performance, running Porting/perlbench.pl on the new expr::aassign:: tests in t/perf/benchmarks show that the biggest slowdown is around 13% more instruction reads and 20% more conditional branches in this: setup => 'my ($v1,$v2,$v3) = 1..3; ($x,$y,$z) = 1..3;', code => '($x,$y,$z) = ($v1,$v2,$v3)', where this is now a false positive due to the presence of package variables. The biggest speedup is 50% less instruction reads and conditional branches in this: setup => '@_ = 1..3; my ($x,$y,$z)', code => '($x,$y,$z) = @_', because formerly the presence of @_ pessimised things if the LHS wasn't a my declaration (it's still pessimised, but the runtime's faster now). Conversely, we pessimise the 'my' variant too now: setup => '@_ = 1..3;', code => 'my ($x,$y,$z) = @_', this gives 5% more instruction reads and 11% more conditional branches now. But see the next commit, which will cheat for that particular construct.
* perldelta for fb10a8a78bbaTony Cook2015-08-171-0/+22
|
* [perl #125760] deprecate sys(read|write)(), send(), recv() on :utf8Tony Cook2015-08-175-0/+53
|
* No __attribute__((nonnull(...))) from NN.Jarkko Hietaniemi2015-08-142-3972/+1230
|
* Math-BigInt is now 1.9997 on CPANChris 'BinGOs' Williams2015-08-131-1/+1
|
* avoid unnecessary noise from lib/h2xs.tTony Cook2015-08-131-1/+1
|
* Require civility; aspire to kindness.Craig A. Berry2015-08-121-3/+7
| | | | | | Suggestion that we "aspire to kindness" from the ever-kind Tim Bunce. Signed-off-by: Ricardo Signes <rjbs@cpan.org>
* dont create *{"_<$filename"} globs for perl lang debugging of XSUBsDaniel Dragan2015-08-124-4/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1st problem, *{"_<$filename"} globs aren't created for PP code unless PERLDB_LINE || PERLDB_SAVESRC are on (see Perl_yylex ). Creating XSUBs unconditionally created the *{"_<$filename"} globs for XSUB, even if PP subs were not getting the debugging globs created. This is probably an oversight, from commit b195d4879f which tried to deprecate using the *{"_<$filename"} GVs for storing the originating filename of the CV which was partially reverted 2 months later in commit 57843af05b with CvFILE becoming a char * instead of GV *. To speed up XSUB registration time, and decrease memory when not in Perl lang debugging mode dont create the debugging globs for XSUBs unless in Perl lang debugging mode. see also http://www.nntp.perl.org/group/perl.perl5.porters/2000/06/msg13832.html 2nd problem, since the perl debugger can't step into C code, nor set breakpoints in it, there is no reason to create *{"_<$filename"} globs for .c files. Since someone maybe one day might try to implement that feature, comment out the code instead of deleting it. This will slightly reduce the size of perl binary, and speed up XSUB registration time, and decrease memory usage when using the Perl debugger. see also (no responses) http://www.nntp.perl.org/group/perl.perl5.porters/2015/06/msg229014.html perl has a number of core perma-XSUBs (UNIVERSAL/PerlIO/DynaLoader/Internals/mro/misc const subs/etc). Each of these previously got a "_<foo.c" glob. I counted 7 .c debugging globs on my perl. This commit, before on WinXP, running threaded perl with -e"system 'pause'" as a sample script, "Private Bytes" (all process unique memory, IE not shared, not mmaped) was 488 KB, after this commit it was 484 KB, which means that enough malloc memory was saved plus a little bit of chance, to cross one 4 KB page of memory. IDK the exact amount of saved memory is over or under 4KB.
* cygwin 2.1.0 can test -r just fine, incl. under adminIvan Pozdeev2015-08-111-1/+1
|
* Increment $VERSION for POSIX to 1.56James E Keenan2015-08-101-1/+1
|
* Porting/bisect-runner.pl: Generalize for EBCDICKarl Williamson2015-08-101-1/+1
| | | | | | | This commit changes to not use hard-coded code point numbers so that it also works on EBCDIC platforms. An unintended consequence is that the VT and \f spacing controls aren't considered a sign of binary. That seems correct to me.
* Fix typo introduced in 0b81c0dda6Steve Hay2015-08-101-1/+1
|
* Pod tweak for [rt.perl.org #125710].Jarkko Hietaniemi2015-08-101-1/+3
|
* Comment tweak related to [rt.perl.org #125710].Jarkko Hietaniemi2015-08-101-0/+4
|
* 32-bit x86 ABI cannot do signaling nans [rt.perl.org #125710]Jarkko Hietaniemi2015-08-101-1/+19
| | | | | | Sleuthed by Tony Cook. The heuristics for the 'x86' part are a bit hacky and all my fault.
* Fix test label.Jarkko Hietaniemi2015-08-101-1/+1
|
* Comment tweaks.Jarkko Hietaniemi2015-08-101-3/+3
|
* Sanity x86 long double check.Jarkko Hietaniemi2015-08-101-0/+2
|
* hints comments tweak.Jarkko Hietaniemi2015-08-101-0/+5
|