perl.git
9 years agoMaintainers.pl: podlators Makefile.PL is CUSTOMIZED
David Golden [Mon, 19 Jul 2010 02:34:07 +0000 (22:34 -0400)] 
Maintainers.pl: podlators Makefile.PL is CUSTOMIZED

9 years agoMaintainers.pl: CPANPLUS Makefile.PL is CUSTOMIZED
David Golden [Mon, 19 Jul 2010 02:29:35 +0000 (22:29 -0400)] 
Maintainers.pl: CPANPLUS Makefile.PL is CUSTOMIZED

9 years agoAdd libnet Makefile.PL to CUSTOMIZED in Maintainers
David Golden [Mon, 19 Jul 2010 01:36:39 +0000 (21:36 -0400)] 
Add libnet Makefile.PL to CUSTOMIZED in Maintainers

9 years agoAdd support for CUSTOMIZED in Maintainers.PL
David Golden [Mon, 19 Jul 2010 01:34:54 +0000 (21:34 -0400)] 
Add support for CUSTOMIZED in Maintainers.PL

Some dual-life modules have custom files in core that differ from
CPAN.  (e.g. Makefile.PL in libnet)  These files need to be listed
in EXCLUDED, but also in CUSTOMIZED so that we don't flag them
incorrectly as "only in Perl"

9 years agoRemoved Archive-Tar Makefile.PL so it autogenerates
David Golden [Mon, 19 Jul 2010 00:56:33 +0000 (20:56 -0400)] 
Removed Archive-Tar Makefile.PL so it autogenerates

9 years agoAdded t/porting/dual-life.t
David Golden [Mon, 19 Jul 2010 00:51:30 +0000 (20:51 -0400)] 
Added t/porting/dual-life.t

Because we manually generate Makefiles, any executables need to be
generated from .PL files in utils/.  This test checks if dual-life
executables show up in utils/.

9 years agocore-cpan-diff: improve detection of version mismatches
David Golden [Mon, 19 Jul 2010 00:25:22 +0000 (20:25 -0400)] 
core-cpan-diff: improve detection of version mismatches

9 years agoList libnet Makefile.PL as excluded
David Golden [Mon, 19 Jul 2010 00:14:44 +0000 (20:14 -0400)] 
List libnet Makefile.PL as excluded

9 years agocore-cpan-diff: perltidy with default settings
David Golden [Sun, 18 Jul 2010 23:20:53 +0000 (19:20 -0400)] 
core-cpan-diff: perltidy with default settings

9 years agocore-cpan-diff: various enhancements
David Golden [Sun, 18 Jul 2010 23:10:55 +0000 (19:10 -0400)] 
core-cpan-diff: various enhancements

* Extracted directories are cached and re-used
* Perl vs CPAN version mismatches shown in summary output
* Various minor code cleanup

Some diagnostic output was surpressed in diff mode, but not all.
I found the output confusing to follow in diff mode as a result
so I enabled some of the previously surpressed output.

9 years agocore-cpan-diff: fix handling of file:/// urls
David Golden [Sun, 18 Jul 2010 20:02:49 +0000 (16:02 -0400)] 
core-cpan-diff: fix handling of file:/// urls

9 years agocore-cpan-diff: remove trailing spaces
David Golden [Sun, 18 Jul 2010 18:50:14 +0000 (14:50 -0400)] 
core-cpan-diff: remove trailing spaces

9 years agocore-cpan-diff: add option for local CPAN mirror
David Golden [Sun, 18 Jul 2010 18:47:47 +0000 (14:47 -0400)] 
core-cpan-diff: add option for local CPAN mirror

9 years agoperl5133delta.pod: Notes on CvGV reference counting
David Golden [Sun, 18 Jul 2010 18:32:11 +0000 (14:32 -0400)] 
perl5133delta.pod: Notes on CvGV reference counting

9 years agoadd CvGV_set() macro and make CvGV() rvalue only
David Mitchell [Sun, 18 Jul 2010 17:18:50 +0000 (18:18 +0100)] 
add CvGV_set() macro and make CvGV() rvalue only

Now that CvGV can sometimes be reference counted, stop people from directly
assigning to it (by using CvGV as an lvalue), and instead force them to use
CvGV_set()

9 years agochange when to make CvGV refcounted
David Mitchell [Sun, 18 Jul 2010 15:21:03 +0000 (16:21 +0100)] 
change when to make CvGV refcounted

Rather than making CvGV refcounted if the CV is anon, decide based on
whether the GV pointed to by CvGV holds a reference back to us. Normally
these two will be equivalent, but this way is more robust if people are
doing weird things.

Also spotted an error with cv_clone not clearing the CVf_CVGV_RC flag on
the newly cloned cv. This shouldn't normally matter as it will get set
shortly anyway, but best to keep things logically correct.

9 years agoadd CVf_CVGV_RC flag
David Mitchell [Sun, 18 Jul 2010 14:07:08 +0000 (15:07 +0100)] 
add CVf_CVGV_RC flag

after the recent commit 803f274831f937654d48f8cf0468521cbf8f5dff,
the CvGV field is sometimes reference counted. Since it was intended that
the reference counting would happen only for anonymous CVs, the CVf_ANON
flag was co-opted to indicate whether RC was being used. This is not
entirely robust; for example, sub __ANON__ {} is a non-anon sub which
points to the same GV used by anon subs, which while itself doesn't
directly break things, shows that the potential for breakage is there.

So add a separate flag just to indicate the reference count status of the
CvGV field.

9 years agoFix address of register error from 26a0cb8
David Golden [Sun, 18 Jul 2010 01:50:40 +0000 (21:50 -0400)] 
Fix address of register error from 26a0cb8

9 years agoperlop.pod: document \o{} escape
David Golden [Sat, 17 Jul 2010 20:27:21 +0000 (16:27 -0400)] 
perlop.pod: document \o{} escape

This is a merge resolution based on original work by Karl Williamson.

9 years agoAdd \o{} escape
Karl Williamson [Thu, 15 Jul 2010 23:28:28 +0000 (17:28 -0600)] 
Add \o{} escape

This commit adds the new construct \o{} to express a character constant
by its octal ordinal value, along with ancillary tests and
documentation.

A function to handle this is added to util.c, and it is called from the
3 parsing places it could occur.  The function is a candidate for
in-lining, though I doubt that it will ever be used frequently.

9 years agoperlrebackslash: Nits
Karl Williamson [Thu, 15 Jul 2010 19:34:50 +0000 (13:34 -0600)] 
perlrebackslash: Nits

Signed-off-by: David Golden <dagolden@cpan.org>
9 years agoperlreref.pod: Nits
Karl Williamson [Thu, 15 Jul 2010 18:25:13 +0000 (12:25 -0600)] 
perlreref.pod: Nits

Signed-off-by: David Golden <dagolden@cpan.org>
9 years agoperlre.pod: Nits
Karl Williamson [Thu, 15 Jul 2010 17:40:14 +0000 (11:40 -0600)] 
perlre.pod: Nits

Signed-off-by: David Golden <dagolden@cpan.org>
9 years agoNits in perlrebackslash
Karl Williamson [Thu, 24 Jun 2010 20:41:28 +0000 (14:41 -0600)] 
Nits in perlrebackslash

Signed-off-by: David Golden <dagolden@cpan.org>
9 years agoAdd tests for \400 for "" strings, s//replacement/
Karl Williamson [Thu, 24 Jun 2010 17:00:06 +0000 (11:00 -0600)] 
Add tests for \400 for "" strings, s//replacement/

Signed-off-by: David Golden <dagolden@cpan.org>
9 years ago\400 -\777 now means the same thing in all d-quote
Karl Williamson [Thu, 24 Jun 2010 14:21:27 +0000 (08:21 -0600)] 
\400 -\777 now means the same thing in all d-quote

Prior to this patch, \400 - \777 meant something different in some
circumstances in regexes outside bracketed character classes.  A
deprecated warning message has been in place since 5.10.1 when this
happens.  Remove the warning, and bring the behavior into line with the
other double-quotish contexts.  \400 - \777 now always means the same
thing as \x{100} - \x{1FF} (except when the octal forms  are taken as
backreferences.)

Signed-off-by: David Golden <dagolden@cpan.org>
9 years agoAdd examples to perlre on perils of not using \g{}
Karl Williamson [Thu, 24 Jun 2010 14:06:27 +0000 (08:06 -0600)] 
Add examples to perlre on perils of not using \g{}

These come from Abigail.

Signed-off-by: David Golden <dagolden@cpan.org>
9 years agoRemove extra blanks from t/re/re_tests, vim
Karl Williamson [Thu, 24 Jun 2010 00:53:56 +0000 (18:53 -0600)] 
Remove extra blanks from t/re/re_tests, vim

My vim settings were causing extra blanks in this file; remove the ones
I added recently and set the vim options to disable the offending
feature.

Signed-off-by: David Golden <dagolden@cpan.org>
9 years agoReinstate aa3f85c5f369736a7e50055b726cf2ca11336ce9.
Craig A. Berry [Sat, 17 Jul 2010 22:46:48 +0000 (17:46 -0500)] 
Reinstate aa3f85c5f369736a7e50055b726cf2ca11336ce9.

Which was clobbered by 7b0eef92ba8ed2aa84e9187dadebc5cabfc3a3c5.

And still awaiting upstream integration at:

<https://rt.cpan.org/Public/Bug/Display.html?id=55236>

Also bumped the version this time to leave a better clue that something
has changed in blead.

9 years agoIn pp_qr, use gv_stashsv() directly on the SV.
Nicholas Clark [Sat, 17 Jul 2010 12:00:46 +0000 (13:00 +0100)] 
In pp_qr, use gv_stashsv() directly on the SV.

Brought to you by the campaign for the elimination of strlen().

9 years agoAvoid test suite hang with new readline test on VMS.
Craig A. Berry [Fri, 16 Jul 2010 17:04:54 +0000 (12:04 -0500)] 
Avoid test suite hang with new readline test on VMS.

9 years agoAdd Perl_blockhook_register to perl5133delta.
Ben Morrow [Fri, 16 Jul 2010 16:15:19 +0000 (17:15 +0100)] 
Add Perl_blockhook_register to perl5133delta.

Signed-off-by: David Golden <dagolden@cpan.org>
9 years agoUpdate perl5133delta
Josh ben Jore [Fri, 16 Jul 2010 06:00:25 +0000 (06:00 +0000)] 
Update perl5133delta

9 years agoThe debugger now continues to use RemotePort when it's been configured to use it.
Josh ben Jore [Tue, 13 Jul 2010 21:49:57 +0000 (14:49 -0700)] 
The debugger now continues to use RemotePort when it's been configured to use it.

9 years agoperlop.pod: Rephrase hexadecimal escape wording
David Golden [Thu, 15 Jul 2010 02:26:33 +0000 (20:26 -0600)] 
perlop.pod: Rephrase hexadecimal escape wording

Clarifies how hexadecimal escapes are interpreted, with particular
attention to the treatment of invalid characters.

Based on an original draft patch by Karl Williamson.

9 years agoAdd summary list mode to git-deltatool
David Golden [Fri, 16 Jul 2010 03:55:50 +0000 (23:55 -0400)] 
Add summary list mode to git-deltatool

9 years agoMore perl5133delta updates
David Golden [Fri, 16 Jul 2010 03:48:07 +0000 (23:48 -0400)] 
More perl5133delta updates

9 years agoMention that Ask did not actually release 5.11.6
Leon Brocard [Thu, 15 Jul 2010 19:42:08 +0000 (20:42 +0100)] 
Mention that Ask did not actually release 5.11.6

9 years agoSmall spelling/grammar nit to Locale::Maketext::Guts*
Jesse Vincent [Thu, 15 Jul 2010 18:42:53 +0000 (14:42 -0400)] 
Small spelling/grammar nit to Locale::Maketext::Guts*

9 years agoClean up older Locale::Maketext internals to no longer do crazy string
Todd Rinaldo [Thu, 15 Jul 2010 18:24:07 +0000 (14:24 -0400)] 
Clean up older Locale::Maketext internals to no longer do crazy string
eval tricks.

9 years agouse modern Perl style in example
Alexandr Ciornii [Tue, 11 May 2010 15:41:22 +0000 (18:41 +0300)] 
use modern Perl style in example

Signed-off-by: David Golden <dagolden@cpan.org>
9 years agoMake example work with "use strict" by eliminating barewords.
Alexandr Ciornii [Tue, 11 May 2010 15:39:19 +0000 (18:39 +0300)] 
Make example work with "use strict" by eliminating barewords.

Signed-off-by: David Golden <dagolden@cpan.org>
9 years agoStop using $ENV{LESS} for parameters not intended for less
Josh ben Jore [Thu, 15 Jul 2010 13:06:28 +0000 (13:06 +0000)] 
Stop using $ENV{LESS} for parameters not intended for less

9 years agoConfigure has a path to less and perl5db.pl can use it
Josh ben Jore [Thu, 15 Jul 2010 13:04:26 +0000 (13:04 +0000)] 
Configure has a path to less and perl5db.pl can use it

9 years agoMacros to en/disable blockhook entries.
Ben Morrow [Tue, 13 Jul 2010 21:20:21 +0000 (22:20 +0100)] 
Macros to en/disable blockhook entries.

This allows the individual callbacks to be switched on and off as
necessary, without removing the entry from PL_blockhooks.

9 years agoUpdate MANIFEST.
Ben Morrow [Tue, 13 Jul 2010 20:06:19 +0000 (21:06 +0100)] 
Update MANIFEST.

Properly, this time.

9 years agoRemove diagnostics from XS-APItest/t/blockhooks.
Ben Morrow [Tue, 13 Jul 2010 20:02:29 +0000 (21:02 +0100)] 
Remove diagnostics from XS-APItest/t/blockhooks.

They were causing problems with 'make test'.

9 years ago[perl #72729] Test appending sv_gets for ascii/utf8 in target and handle
Josh ben Jore [Thu, 15 Jul 2010 05:08:24 +0000 (22:08 -0700)] 
[perl #72729] Test appending sv_gets for ascii/utf8 in target and handle

9 years ago[perl #72729] TODO for aborted readline() returning '' instead of undef
Josh ben Jore [Thu, 15 Jul 2010 05:06:16 +0000 (22:06 -0700)] 
[perl #72729] TODO for aborted readline() returning '' instead of undef

9 years ago[perl #72729] Truncate sv_gets(sv) only when not appending to a string
Josh ben Jore [Thu, 15 Jul 2010 05:02:28 +0000 (22:02 -0700)] 
[perl #72729] Truncate sv_gets(sv) only when not appending to a string

9 years agoAdd a 'blocking' type for git-deltatool
David Golden [Thu, 15 Jul 2010 02:00:41 +0000 (22:00 -0400)] 
Add a 'blocking' type for git-deltatool

9 years agoPATCH: [perl #76502] Fix UCD.pm doc
Karl Williamson [Wed, 14 Jul 2010 23:21:40 +0000 (17:21 -0600)] 
PATCH: [perl #76502] Fix UCD.pm doc

Thank you for your bug report.  Change <lower> to <upper> as the report
showed.

Signed-off-by: David Golden <dagolden@cpan.org>
9 years agoprotect CvGV weakref with backref
David Mitchell [Mon, 12 Jul 2010 19:53:04 +0000 (20:53 +0100)] 
protect CvGV weakref with backref

Each CV usually has a pointer, CvGV(cv), back to the GV that corresponds
to the CV's name (or to *foo::__ANON__ for anon CVs).  This pointer wasn't
reference counted, to avoid loops. This could leave it dangling if the GV
is deleted.

We fix this by:

For named subs, adding backref magic to the GV, so that when the GV is
freed, it can trigger processing the CV's CvGV field. This processing
consists of: if it looks like the freeing of the GV is about to trigger
freeing of the CV too, set it to NULL; otherwise make it point to
*foo::__ANON__ (and set CvAONON(cv)).

For anon subs, make CvGV a strong reference, i.e. increment the refcnt of
*foo::__ANON__. This doesn't cause a loop, since in this case the
__ANON__ glob doesn't point to the CV. This also avoids dangling pointers
if someone does an explicit 'delete $foo::{__ANON__}'.

Note that there was already some partial protection for CvGV with
commit f1c32fec87699aee2eeb638f44135f21217d2127. This worked by
anonymising any corresponding CV when freeing a stash or stash entry.
This had two drawbacks. First it didn't fix CVs that were anonmous or that
weren't currently pointed to by the GV (e.g. after local *foo), and
second, it caused *all* CVs to get anonymised during cleanup, even the
ones that would have been deleted shortly afterwards anyway. This commit
effectively removes that former commit, while reusing a bit of the
actual anonymising code.

9 years agoin CLONEf_JOIN_IN, cache found stashes
David Mitchell [Mon, 5 Jul 2010 21:25:12 +0000 (22:25 +0100)] 
in CLONEf_JOIN_IN, cache found stashes

When joining a thread, we skip cloning a stash if a stash of the same
name already exists in the parent thread. Add it to PL_ptr_table too, so
we don't have to repeat the expensive name comparison each time

9 years agoadd all stash backrefs individually when joining
David Mitchell [Mon, 5 Jul 2010 21:07:30 +0000 (22:07 +0100)] 
add all stash backrefs individually when joining

When joining a thread, a 'mini' interpreter clone is performed to
clone the returned SVs and dependents back into the parent interpreter.
To make things simple in this case, don't clone the xhv_backreferences
array of any stashes, but individually add in any cloned GVs and CVs
whose [CG]vSTASH points that way. This is faster (avoids an expensive test
per CV/GV) and better (doesn't clone unnecessary SVs in the backref array)

9 years agomake it an error to look for magic hv backref
David Mitchell [Mon, 5 Jul 2010 20:11:21 +0000 (21:11 +0100)] 
make it an error to look for magic hv backref

Now that we only store a stash's backref AV in xhv_backreferences,
make it a panic if we don't find it there, rather than falling back to
look for backref magic.

9 years agoprotect CvSTASH weakref with backrefs
David Mitchell [Mon, 5 Jul 2010 19:40:33 +0000 (20:40 +0100)] 
protect CvSTASH weakref with backrefs

Each CV usually has a pointer, CvSTASH, back to the stash that it was
complied in. This pointer isn't reference counted, to avoid loops. Which
can leave it dangling if the stash is deleted.

There is already protection for the similar GvSTASH field in GVs: the
stash has an array of backrefs, xhv_backreferences, pointing to the GVs
whose GvSTASHes point to it, and which is used to zero all the GvSTASH
fields should the stash be deleted.

All this patch does is also add the CVs with CvSTASH to that stash's
backref list too.

9 years agotidy some code in gv_init()
David Mitchell [Sun, 4 Jul 2010 20:44:35 +0000 (21:44 +0100)] 
tidy some code in gv_init()

Use an intermediate variable cv to avoid lots of GvCV(gv)'s

9 years agoprocess xhv_backreferences early in S_hfreeentries
David Mitchell [Sun, 4 Jul 2010 19:51:35 +0000 (20:51 +0100)] 
process xhv_backreferences early in S_hfreeentries

When deleting a stash, make the algorithm
    GvSTASH($_) = NULL for (@xhv_backreferences);
    delete xhv_backreferences;
    free each stash entry;

Previously the algorithm was

    hide xhv_backreferences as ordinary backref magic;
    free each stash entry:
this may trigger a sv_del_backref() for each GV being freed
    delete @xhv_backreferences

The new method is:

* more efficient: one scan through @xhv_backreferences rather than lots of
calls to sv_del_backref(), removing elements one by one;

* makes the code simpler; the 'hide xhv_backreferences as backref magic'
hack no longer needs to be done

* removes a bug whereby GVs that had a refcnt > 1 (the usual case) were
left with a GvSTASH pointing to the freed stash; it's now NULL instead. I
couldn't think of a test for this.

There are two drawbacks:

* If the GV gets freed at the same time as the stash, the freeing code
sees the GV with a GVSTASH of NULL rather than still pointing to the
stash.

* As far as I can see, the only difference this currently makes is that
mro_method_changed_in() is no longer called by sv_clear(), but since we're
blowing away the whole stash anyway, method resolution doesn't really
bother us any more.

At some point in the future I might set GvSTASH to %__ANON__ rather than
NULL.

9 years ago[perl #72729] Test that sv_gets doesn't revive dead strings
Josh ben Jore [Wed, 14 Jul 2010 06:57:14 +0000 (23:57 -0700)] 
[perl #72729] Test that sv_gets doesn't revive dead strings

9 years agoAdd t/op/readline.t docs
Josh ben Jore [Wed, 14 Jul 2010 06:56:29 +0000 (23:56 -0700)] 
Add t/op/readline.t docs

9 years agoAdd x-ref from call site in do_readline() of sv_grow() to it's matching test in t...
Josh ben Jore [Wed, 14 Jul 2010 04:33:34 +0000 (21:33 -0700)] 
Add x-ref from call site in do_readline() of sv_grow() to it's matching test in t/op/readline.t

9 years agoUpdate template for linked perldelta sections in deltatool
David Golden [Wed, 14 Jul 2010 15:02:54 +0000 (11:02 -0400)] 
Update template for linked perldelta sections in deltatool

9 years agoAdd help and fix doc typo for git-deltatool
David Golden [Wed, 14 Jul 2010 14:54:22 +0000 (10:54 -0400)] 
Add help and fix doc typo for git-deltatool

9 years agoRevise perldelta template to group doc/utility bullets
David Golden [Wed, 14 Jul 2010 02:07:35 +0000 (22:07 -0400)] 
Revise perldelta template to group doc/utility bullets

9 years agoFix transient pod infelicities spotted by podcheck.t
Nicholas Clark [Tue, 13 Jul 2010 19:20:21 +0000 (20:20 +0100)] 
Fix transient pod infelicities spotted by podcheck.t

9 years agoAdd more recent commits to perldelta
David Golden [Tue, 13 Jul 2010 16:08:58 +0000 (12:08 -0400)] 
Add more recent commits to perldelta

9 years agoperlop.pod: Document current \000 \x behavior
Karl Williamson [Thu, 8 Jul 2010 16:18:58 +0000 (10:18 -0600)] 
perlop.pod: Document current \000 \x behavior

Signed-off-by: David Golden <dagolden@cpan.org>
9 years agoUpdate CPANPLUS to CPAN version 0.9007
Chris 'BinGOs' Williams [Tue, 13 Jul 2010 11:14:35 +0000 (12:14 +0100)] 
Update CPANPLUS to CPAN version 0.9007

  [DELTA]

  Changes for 0.9007      Tue Jul 13 10:44:30 2010
  ================================================
  * Fix the shell test to skip if test is not being run under a
    terminal, reported by Justin Case RT #59254

  Changes for 0.9006      Fri Jul  9 13:44:22 2010
  ================================================
  * Finally resolved the issue where a prereq on Config would not be
    recognised as a core module

9 years agoUpdate ExtUtil-ParseXS to CPAN version 2.2206
Chris 'BinGOs' Williams [Tue, 13 Jul 2010 11:08:05 +0000 (12:08 +0100)] 
Update ExtUtil-ParseXS to CPAN version 2.2206

  [DELTA]

  2.2206 - Sun Jul  4 15:43:21 EDT 2010

  Bug fixes:

  - Make xsubpp accept the _ prototype (RT#57157) [Rafael Garcia-Suarez]

  - INCLUDE_COMMAND portability fixes for VMS (RT#58181) [Craig Berry]

  - INCLUDE_COMMAND fixes to detect non-zero exit codes (RT#52873)
    [Steffen Mueller]

9 years agoUpdate Archive-Tar to CPAN version 1.64
Chris 'BinGOs' Williams [Tue, 13 Jul 2010 11:02:16 +0000 (12:02 +0100)] 
Update Archive-Tar to CPAN version 1.64

  [DELTA]

  * important changes in version 1.64 09/07/2010
  - Removed the PERL_CORE specific chdir from all the tests
  - Apply a patch from David Muir Sharnoff RT #58916,
    "skip files via a callback and limit memory use when skipping files"
  - Apply a patch from Daphne Pfister RT #59150
    "Assumes all references filename are IO::Handle's instead of trying to stringify."

9 years agoUpdate IPC-Cmd to CPAN version 0.60
Chris 'BinGOs' Williams [Tue, 13 Jul 2010 10:56:15 +0000 (11:56 +0100)] 
Update IPC-Cmd to CPAN version 0.60

  [DELTA]

  Changes for 0.60    Mon Jul  5 09:04:54 BST 2010
  =================================================
  * Corrected spelling mistakes in POD, spotted by H.Merijn Brand
  * Apply a patch from Burak Gursoy RT #58886, which fixes paths
    on MSWin32
  * Apply patch from Petya Kohts, RT #50398, which allows more
    flexible configuration of run_forked and its children

9 years agoReset variables being initialized by readline before we do possibly blocking I/O
Josh ben Jore [Tue, 13 Jul 2010 06:56:55 +0000 (23:56 -0700)] 
Reset variables being initialized by readline before we do possibly blocking I/O

9 years agonew is a reserved word in C++, don't use it as a variable name
Tony Cook [Tue, 13 Jul 2010 05:11:54 +0000 (15:11 +1000)] 
new is a reserved word in C++, don't use it as a variable name

Fix a cause of black smoke for C++ builds.

9 years agoCreate S_assert_uft8_cache_coherent() with one copy of the cache panic code.
Nicholas Clark [Mon, 12 Jul 2010 12:39:19 +0000 (13:39 +0100)] 
Create S_assert_uft8_cache_coherent() with one copy of the cache panic code.

Replacing 4 copies of this debugging-only routine with 1 reduces source and
object code size.

9 years agoPerl_sv_len_utf8 can use the UTF-8 offset cache to reduce its linear scan.
Nicholas Clark [Mon, 12 Jul 2010 12:09:28 +0000 (13:09 +0100)] 
Perl_sv_len_utf8 can use the UTF-8 offset cache to reduce its linear scan.

Previously, if the scalar's character length wasn't yet known, but an offset
midway was, the offset would be ignored, and the linear scan of UTF-8 was for
the entire length of the scalar.

9 years agoPerl_sv_pos_b2u now calls utf8_mg_len_cache_update for the string end offset.
Nicholas Clark [Mon, 12 Jul 2010 10:56:59 +0000 (11:56 +0100)] 
Perl_sv_pos_b2u now calls utf8_mg_len_cache_update for the string end offset.

Previously it would not take special action if the offset requested happened to
be the end of the string, meaning that the (fixed size) UTF-8 offset cache
would be used for a value which could (and should) be stored elsewhere.

9 years agoS_sv_pos_u2b_cached now updates the UTF-8 length cache if at the end of string.
Nicholas Clark [Mon, 12 Jul 2010 10:38:31 +0000 (11:38 +0100)] 
S_sv_pos_u2b_cached now updates the UTF-8 length cache if at the end of string.

Pass in a boolean to S_sv_pos_u2b_forwards, which sets it to true if it
discovers that the UTF-8 offset is at (or after) the end of the string.
This can only happen if we don't already know the SV's length (in Unicode
characters), because if we know it, we always call S_sv_pos_u2b_midway().

9 years agoBreak S_utf8_mg_len_cache_update() out from Perl_sv_len_utf8().
Nicholas Clark [Mon, 12 Jul 2010 10:16:41 +0000 (11:16 +0100)] 
Break S_utf8_mg_len_cache_update() out from Perl_sv_len_utf8().

9 years agoFix for RT#2353: catch yyparse() exceptions in (?{...})
George Greer [Sat, 10 Jul 2010 23:18:12 +0000 (19:18 -0400)] 
Fix for RT#2353: catch yyparse() exceptions in (?{...})

Ticket is entitled:
"panic: top_env when localizing a lexical variable in qr{(?{...})}"

but a better description would be:
"(?{...}) does not catch yyparse() exceptions in regex compilation"

Changes Perl_sv_compile_2op() to tell doeval() that it must use
S_try_yyparse() to catch any exception that yyparse() may throw.

9 years agoUpdate MANIFEST.
Ben Morrow [Wed, 9 Dec 2009 10:37:14 +0000 (10:37 +0000)] 
Update MANIFEST.

9 years agoDocument the blockhook functions and macros.
Ben Morrow [Wed, 9 Dec 2009 10:32:23 +0000 (10:32 +0000)] 
Document the blockhook functions and macros.

9 years agoTeach autodoc.pl about 'o' functions.
Ben Morrow [Wed, 9 Dec 2009 10:24:33 +0000 (10:24 +0000)] 
Teach autodoc.pl about 'o' functions.

That is, functions with no #define foo Perl_foo. I'm not certain this is
the right way to do it, as I don't really understand which flags autodoc
honours from which places; currently, it's necessary to put the 'o' flag
on the =for apidoc line or it will be ignored.

9 years agoSystematic tests for the block hooks.
Ben Morrow [Mon, 7 Dec 2009 19:00:04 +0000 (19:00 +0000)] 
Systematic tests for the block hooks.

I've left the dummy implementation of @{^C_S_C} in, as it's actually
useful for some of the other tests. (Something simpler would work just
as well, of course.)

9 years agoWrap PL_blockhooks in an API function.
Ben Morrow [Mon, 7 Dec 2009 12:55:57 +0000 (12:55 +0000)] 
Wrap PL_blockhooks in an API function.

This should help prevent people from thinking they can get cute with the
contents.

9 years agoMacroify the block_hooks structure.
Ben Morrow [Mon, 7 Dec 2009 11:52:23 +0000 (11:52 +0000)] 
Macroify the block_hooks structure.

Add a flags member, so it can be extended later if necessary. Add a
bhk_eval member, called from doeval to catch requires and string evals.

9 years agoInitial very basic tests for PL_blockhooks.
Ben Morrow [Thu, 26 Nov 2009 17:22:22 +0000 (17:22 +0000)] 
Initial very basic tests for PL_blockhooks.

This is taken directly from rafl's @{^COMPILE_SCOPE_CONTAINER}
implementation posted on p5p.

9 years agoGeneric hooks into Perl_block_{start,end}.
Ben Morrow [Thu, 26 Nov 2009 17:18:29 +0000 (17:18 +0000)] 
Generic hooks into Perl_block_{start,end}.

These take the form of a vtable pushed onto the new PL_blockhooks array.
This could probably do with a API around it later. Separate pre_end and
post_end hooks are needed to capture globals before the stack is unwound
(like needblockscope in the existing code). The intention is that once
a vtable is installed it never gets removed, so where necessary
extensions using this will need to use a hinthv element to determine
whether to do anything or not.

9 years agoAvoid UTF-8 cache panics with offsets beyond the string. Fixes RT #75898.
Nicholas Clark [Sun, 11 Jul 2010 19:11:10 +0000 (20:11 +0100)] 
Avoid UTF-8 cache panics with offsets beyond the string. Fixes RT #75898.

Change S_sv_pos_u2b_forwards() to take a point to the (requested) UTF-8 offset,
and return the actual UTF-8 offset for the byte position returned. This ensures
that the cache is consistent with reality.

9 years agoIn Perl_sv_pos_u2b_flags and S_sv_pos_u2b_cached, return early for offset 0.
Nicholas Clark [Sun, 11 Jul 2010 16:17:37 +0000 (17:17 +0100)] 
In Perl_sv_pos_u2b_flags and S_sv_pos_u2b_cached, return early for offset 0.

0 Unicode characters are always 0 octets long. Returning early ensures that
any offsets we calculate later will always be non-zero.

9 years agoIn S_sv_pos_u2b_midway, inline the call to S_sv_pos_u2b_forwards.
Nicholas Clark [Sun, 11 Jul 2010 15:49:29 +0000 (16:49 +0100)] 
In S_sv_pos_u2b_midway, inline the call to S_sv_pos_u2b_forwards.

9 years agoSort and complete the op flags lists for op_dump()
Vincent Pit [Sun, 11 Jul 2010 11:34:28 +0000 (13:34 +0200)] 
Sort and complete the op flags lists for op_dump()

9 years agoRT #73520: POSIX::strftime memory leak
Tony Cook [Sun, 11 Jul 2010 11:23:30 +0000 (21:23 +1000)] 
RT #73520: POSIX::strftime memory leak

Tested before/after with valgrind.

9 years agoDie with $@ instead of empty message
Josh ben Jore [Sat, 10 Jul 2010 14:54:55 +0000 (07:54 -0700)] 
Die with $@ instead of empty message

9 years agoRemove extra/useless $@ check after eval { require PadWalker } (which is still checked)
Josh ben Jore [Sat, 10 Jul 2010 14:54:32 +0000 (07:54 -0700)] 
Remove extra/useless $@ check after eval { require PadWalker } (which is still checked)

9 years agoPromote eval( "require ..." ) to eval { require ... }
Josh ben Jore [Sat, 10 Jul 2010 14:53:35 +0000 (07:53 -0700)] 
Promote eval( "require ..." ) to eval { require ... }

9 years agoPromote eval { require( ... )} || die to mere require( ... )
Josh ben Jore [Sat, 10 Jul 2010 14:52:06 +0000 (07:52 -0700)] 
Promote eval { require( ... )} || die to mere require( ... )

9 years agoRemove indirect object notation from debugger
Josh ben Jore [Sat, 10 Jul 2010 14:50:41 +0000 (07:50 -0700)] 
Remove indirect object notation from debugger

9 years agoDocument that @{$main::{'_<'.$filename}} lines are dualvar to (COP*).
Josh ben Jore [Sat, 10 Jul 2010 14:38:31 +0000 (07:38 -0700)] 
Document that @{$main::{'_<'.$filename}} lines are dualvar to (COP*).

9 years agoIn t/harness, clear PERL5LIB, PERLLIB, PERL5OPT as t/TEST does.
Nicholas Clark [Fri, 9 Jul 2010 09:42:41 +0000 (10:42 +0100)] 
In t/harness, clear PERL5LIB, PERLLIB, PERL5OPT as t/TEST does.

In fact, as t/harness requires t/TEST, simply get t/TEST to do it for
t/harness too.