| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
Anywhere an API function takes a string in pvn form, ensure that there
are corresponding pv, pvs, and sv APIs.
|
|
|
|
|
| |
While one certainly can argue the merits of using a class name like "\0", it is legal
so lets avoid it confusing our primary debugging tool.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
These are left from PERL_OBJECT, which was an implementation of
multiplicity using C++ objects. PERL_OBJECT was removed in 5.8, but the
macros seem to have been cargo-culted all over the core (including in
places where they would have been inappropriate originally). Since they
now do exactly nothing, it's cleaner to remove them.
I have left the definitions in perl.h, under #ifndef PERL_CORE, since
some CPAN XS code uses them (also often incorrectly). I have also left
STATIC alone, since it seems potentially more useful and is much more
ingrained.
The only appearance of these macros this patch doesn't touch is in
Devel-PPPort, because that's a CPAN module.
|
|
|
|
|
| |
Rather than just recording whether an SV was cloned (sv->sv_debug_cloned),
record the address of the SV we were cloned from.
|
| |
|
| |
|
|
|
|
|
|
| |
When dumping an HV, we skip dumping the elements if the iterator is
already in use. Explain this in the dump output so people like me aren't
left wondering why the elements have vanished.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
|
| |
Thus silencing compiler noise like:
OP_PRIVATE_ONCE(op_aassign, OPpASSIGN_COMMON, ",COMMON");
........................................................^
%CC-I-EXTRASEMI, Extraneous semicolon.
at line number 846 in file D0:[craig.blead]dump.c;1
|
| |
|
| |
|
|
|
|
| |
Refactor the macro append_flags() in dump.c to use it.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
Convert repetitive sequences of "if this bit is set, append that string" into
structures and a function call. Use a custom macro append_flags() to make
calling it easer.
This makes the object code slightly smaller.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The previous commit made various ops such as rv2av unconditionally do
an SvGETMAGIC(). Under some circumstances this could cause a double
mg_get() (and hence double FETCH etc). In particular, when the
proceeding op was something like aelem with OPpDEREF, the aelem would
call vivify_ref(), which would call magic. So in peep(), mark
OP_RV2[SAH]V ops with the new OPpDEREFed flag if the preceding op was
OPpDEREF. Then use this flag to avoid a second dose of magic.
Note that RV2GV probably needs this flag too, but there weren't any
spare private flag bits left for that op (I think).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This changes s/// so that it doesn't act destructively on its target.
Instead it returns the result of the substitution (or the original string if
there was no match).
In addition this patch:
* Adds a new warning when s///r happens in void context.
* Adds a error when you try to use s///r with !~
* Makes it so constant strings can be bound to s///r with =~
* Adds documentation.
* Adds some tests.
* Updates various debug code so it knows about the /r flag.
* Adds some new 'r' words to B::Deparse.
|
| |
|
|
|
|
|
|
| |
Change 27536 (45f4726) started using -1 as a special len value for utf8
magic. I believe this marker indicates that the utf8 length cache needs
to be calculated, in which case dump.c can ignore this case.
|
|
|
|
|
|
|
|
|
| |
For the typical code this gives a 5% speedup, and removes the cost of "safe
signals". Tight looping code will show less gains, but should never be slower.
Subtle bugs might remain - there might be constructions that enter the runloop
(where signals used to be dispatched) but don't contain any PERL_ASYNC_CHECK()
calls themselves.
|
| |
|
| |
|
|
|
|
|
| |
Replace ckWARN_d{,2,3,4}() && Perl_warner() with it, which trades reduced code
size for 1 more function call if warnings are not enabled.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
This fixes [perl #68590] : %^H not lexical enough.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Hello,
gcc warned me about a suspicious combination of ! and &
Please consinder the following one-line patch.
Stepan Kasal
From 4b449da2aedf3b40b8f6dfa4c410d9becb33330a Mon Sep 17 00:00:00 2001
From: Stepan Kasal <skasal@redhat.com>
Date: Tue, 2 Jun 2009 16:06:10 +0200
Subject: [PATCH] dump.c: parenthesize flag check
Signed-off-by: H.Merijn Brand <h.m.brand@xs4all.nl>
|
| |
|
| |
|
|
|
| |
p4raw-id: //depot/perl@34837
|
|
|
|
|
|
| |
Message-ID: <25940.1225611819@chthon>
Date: Sun, 02 Nov 2008 01:43:39 -0600
p4raw-id: //depot/perl@34698
|
|
|
|
|
|
| |
Can't easily do gv.h, as GvGP() (at least) needs to split into two
macros - one const for reading, one non-const for writing.
p4raw-id: //depot/perl@34679
|
|
|
|
|
| |
erroneous const in dump.c.
p4raw-id: //depot/perl@34675
|
|
|
| |
p4raw-id: //depot/perl@34653
|
|
|
| |
p4raw-id: //depot/perl@34650
|
|
|
|
|
| |
from its apidoc section.
p4raw-id: //depot/perl@34649
|
|
|
|
|
| |
its arguments.
p4raw-id: //depot/perl@34646
|
|
|
|
|
|
| |
Those are already in embed.fnc, and most of them were already
outdated. This also fixes the docs for pv_escape and pv_pretty.
p4raw-id: //depot/perl@34642
|
|
|
| |
p4raw-id: //depot/perl@34629
|
|
|
| |
p4raw-id: //depot/perl@34585
|
|
|
| |
p4raw-id: //depot/perl@34167
|
|
|
|
|
| |
re-implemented SvOOK() to avoid using it)
p4raw-id: //depot/perl@34133
|