| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
| |
This reverts commit d2cd363728088adada85312725ac9d96c29659be, reversing
changes made to 068b48acd4bdf9e7c69b87f4ba838bdff035053c.
This change breaks installing Test::Deep:
...
not ok 37 - Test 'isa eq' completed
ok 38 - Test 'isa eq' no premature diagnostication
...
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
0923255565af0741 broke the build on any platform that does not
promiscuously export all symbols from a shared library because
it moved a bunch of symbols from being API (A flag) to core-only
(C flag), but the new C flag was unknown to the program that
generates the export list. Some of these functions are already
used outside the core (such as by the Encode extension) so we
can't simply pull the plug on them.
|
|\
| |
| |
| |
| | |
Makes determining context at runtime faster (e.g. last statement in a
sub).
|
| | |
|
| |
| |
| |
| |
| | |
So we don't need to check whether (cxstack[cxix].blk_gimme & G_WANT),
just use it. Replace the check with an assertion.
|
| |
| |
| |
| |
| |
| | |
This function makes use of PL_curstackinfo->si_cxsubix to avoid the
overhead of a call to block_gimme() when the context of the op is
unknown.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This tracks the most recent sub/eval/format context pushed onto the
context stack. Then make dopopto_cursub use it.
The previous value is saved in the cxt struct, and is restored whenever
the context is popped.
This adds a tiny overhead for every sub call, but speeds up other
operations, such as determining the caller context when returning a
value from a sub - this has to be dpne for every sub call where the last
expression is context sensitive, so its often a win.
|
| |
| |
| |
| | |
short for dopoptosub(cxstack_ix), a common idiom in that file.
|
|/
|
|
|
|
|
|
| |
The OP_ENTER planted at the start of a program (and possibly elsewhere)
gets left as UNKNOWN context rather than VOID context, due to op_scope()
not honouring the current context.
Fixing this makes things infinitesimally faster.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
The hexfp code doesn't check that the shift is 4, and so also
accepts binary and octal fp numbers.
Unfortunately the call to S_new_constant() always passed a prefix
of 0x, so overloading would be trying to parse the wrong number.
Another option is to simply allow only hex floats, though some work
was done in 131894 to improve oct/bin float support.
|
|
|
|
|
| |
The length of an EXACTish node is the same bits as the FLAGS field in
other nodes; it doesn't "precede the length", as previously claimed.
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This series of commits slightly improves XS code name space pollution
from the core, and better documents what is happening.
It adds a new C flag to embed.fnc which doesn't change the pollution
problem, but makes it easier for downstream tools, like Devel::PPPort.
Some of the inline.h functions didn't even have prefixes, contrary to
our policy of having functions visible outside the core have a 'Perl_'
prefix.
The branch also documents a couple of API functions and macros.
And better error checking of embed.fnc entries is now done.
|
| |
| |
| |
| |
| | |
embed.fnc now has been updated to not have these flaws, so can now
enforce them for the future.
|
| |
| |
| |
| | |
The two flags are now mutually exclusive, so no need to test for both.
|
| |
| |
| |
| |
| | |
The M flag does what the o flag except add an incorrect warning. So
remove the 'o' which gets rid of the warning.
|
| |
| |
| |
| |
| | |
This is a macro, so doesn't have a Perl_ long form function call.
Also forbid 'm' and 'S', but there weren't any current uses of that.
|
| |
| |
| |
| | |
It requires the prefix and a thread context parameter.
|
| |
| |
| |
| |
| | |
The usage example for these will have the thread context parameter
unless there is no thread context.
|
| | |
|
| |
| |
| |
| | |
Macros can't currently be restricted in scope.
|
| | |
|
| |
| |
| |
| | |
Two parameters weren't described, nor the warnings category used.
|
| |
| |
| |
| |
| | |
This is because it has the X flag, which means the function is visible
on ELF systems.
|
| |
| |
| |
| | |
This inline function should have an entry.
|
| | |
|
| |
| |
| |
| | |
These function names need a Perl_ prefix to avoid namespace pollution.
|
| |
| |
| |
| |
| |
| | |
and change the name of one. CvDEPTH shouldn't have a trailing 'p' to
indicate private memeber access. It may do so internally, but the name
shouldn't indicate that.
|
| |
| |
| |
| |
| | |
This inline function should not be visible outside certain core (and
ext/re) functions. Make that happen.
|
| |
| |
| |
| |
| |
| | |
Traditionally, functions in perl have been written so their initial '{'
is in column 1 after the prototype. This makes grepping easier. This
commit brings 3 functions in this file into conformance.
|
| |
| |
| |
| | |
All functions should have a prefix.
|
| |
| |
| |
| | |
but are inline functions. They should be listed in embed.fnc.
|
| |
| |
| |
| | |
Names with leading underscores are reserved for the C implementers.
|
| |
| |
| |
| |
| | |
A function name with a leading underscore is not legal in C. Instead
add a suffix to differentiate this name from an otherwise identical one.
|
| |
| |
| |
| | |
Leading underscored name are reserved for the C implementers
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This is being done only for those functions that don't have a guard
preventing them from being seen outside of the Perl core.
Talking to Tony Cook, we agreed that this was a good idea for two
reasons:
1) The 'Perl_' prefix does not pollute XS caller's name space. The 'S_'
one could be argued that it doesn't much either, but it does more so
than 'Perl_', and the next reason is the clincher:
2) It allows us to change our minds about whether a function should be
static inline or not, without affecting callers who use the Perl_
form, which they would be accustomed to anyway if they're using the
full name form.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Prior to this commit, if you changed a pointer argument to allow it
being a NULL, you had to go in and also remove the function's
PERL_ARGS_ASSERT macro call. Now, such macros are generally defined
even if they are empty, so you can add such a call to any function, and
it will always compile. If there is no assertion needed, the macro
expands to nothing.
Thus now, the use of these macros is optional when no assert is needed;
but still required by the porting test args_assert.t when an assert is
needed.
The generation of such a macro (when its use is optional) can be
suppressed for individual entries by the new G flag in embed.fnc, also
added by this commit.
|
| |
| |
| |
| |
| |
| |
| |
| | |
By surrounding the interior stuff with these in one statement, it makes
it easier to change that interior stuff without having dangling
statements.
This makes no difference in the current generated output
|
| |
| |
| |
| | |
Now that we have Strtod, my_strtod, those should be used instead.
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
The previous commit added the C flag, which is better to use in many
instances than x. This commit changes the x entries in embed.fnc that
I'm pretty sure would be better off being C, and removes some 'x'
entries for internal only functions
|
| |
| |
| |
| |
| |
| |
| |
| | |
Previously the x flag was (mis-)used for this purpose. Some functions
that are accessible by XS writers shouldn't be used by them, such as
helper functions that an inline public function calls. This new flag
alows that to be specified, without having to mark the function as
experimental, which could be misleading to later core maintainers
|