| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
| |
An unescaped right angle bracket was resulting in a malformed code snippet in warnings.pm
This tiny PR escapes that character and thus fixes the rendering.
regen/warnings.pl corrected and regenerated; version bumped.
Pete Houston is now a Perl Author.
For: https://github.com/Perl/perl5/pull/19228
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The bitwise ops, such as a '<<', have an op_private flag that is set
when compiled within the scope of 'use integer;'.
Unfortunately, due to historical reasons, the defined flag that
indicates this bit (bit 0) is HINT_INTEGER rather than an OPpfoo define.
But HINT_INTEGER is supposed to represent a bit within PL_hints, not a bit
within op_private. If someone reorganised the flags in PL_hints at some
point, it would mess up bitwise ops.
So this commit:
1) adds a new flag, OPpUSEINT, to indicate the bit within op_private.
2) Changes this flag's value from 0x1 to 0x4 to force it to be different
than HINT_INTEGER - thus potentially flushing out any misuse of this
flag anywhere (in core or XS code).
3) tells regen/op_private that the lower two bits of op_private in bitwise
ops don't contain the argument count. They never did, but not
specifying that in regen/op_private meant that the debugging code in
op_free() never spotted the unknown bit 0 sometimes being set.
4) Also tell that debugging code to skip the test if the op is banned.
This fixes a new fail in dist/Safe/t/safeops.t which was croaking
about a banned op having an unrecognised op_private flag bit set
before ck_bitop() had a chance to delete the arg count in op_private.
|
| |
|
| |
|
|
|
|
| |
This is used for the \b{lb}, and the rule is changing in Unicode 14.0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Adds syntax `defer { BLOCK }` to create a deferred block; code that is
deferred until the scope exits. This syntax is guarded by
use feature 'defer';
Adds a new opcode, `OP_PUSHDEFER`, which is a LOGOP whose `op_other` field
gives the start of an optree to be deferred until scope exit. That op
pointer will be stored on the save stack and invoked as part of scope
unwind.
Included is support for `B::Deparse` to deparse the optree back into
syntax.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There currently is a set of defines for switching on the op code of the
regnode, and another set for switching on that plus the utf8ness of both
the target and pattern. This latter set is useful in one routine in
regexec.c where all three are important. It allows fewer branches to
have to be done by encoding where to go into the case: value.
There are other similar switches in regexec. The one in regrepeat()
doesn't care very much about the utf8ness of the pattern.
This commit adds a third set of defines for use by that switch, which
will be used by the next commit.
|
| |
|
|
|
|
| |
This is now generated by regcharclass.pl
|
|
|
|
|
|
|
|
| |
Inspired by discussion in #p5p.
This calls caller() itself rather than taking hints and hints_hash
parameters so if we end up adding an extra hints word callers won't
need to adjust their code.
|
|
|
|
|
| |
This will be used in the next commit. It requires only the first two
bytes to determine if a UTF-8 or UTF-EBCDIC sequence is for a surrogate
|
|
|
|
| |
The previous commit stopped using this code, so can just get rid of it.
|
|
|
|
|
|
|
|
|
|
|
| |
A couple of commits ago improved the generated output of this script.
This builds on that. The improvements were to try a transform that
could lead to fewer conditionals, as bytes were greouped in fewer
ranges.
But that introduced a useless transformation for the single element
ranges that remain. This commit removes the transformation if not
needed.
|
|
|
|
| |
This is in preparation for a future commit
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
UTF-8 has some desirable characteristics not shared by UTF-EBCDIC. One
example is all the continuation bytes are in a single range.
By transforming a UTF-EBCDIC byte into I8 (similar to UTF-8), we gain
those characteristics, and may be able to save a conditional or three.
This commit creates a 2nd pass over the bytes that are to be matched,
transforming them into I8. If that pass results in fewer conditionals
than the traditional, native, generated code, use the fewer result.
This saves quite a bit in some of the generated code, enabling the
quotemeta macro to be represented in a single part; previously it had to
be split to avoid compiler macro size limits.
|
|
|
|
| |
A future commit will put a block around this; indent now.
|
|
|
|
| |
These will be used in a future commit
|
|
|
|
|
|
|
| |
A future commit will pass this function data that shouldn't be
translated into a mnemonic, like 'f' for the letter f. The reason is
that that code will potentially be executed on a machine with a
different character set than what the mnemonic would be valid for.
|
|
|
|
| |
A future commit will use this differently than the current name implies
|
|
|
|
|
| |
This moves a loop earlier in the execution path. This will be useful in
a later commit
|
| |
|
| |
|
|
|
|
|
| |
We can short circuit some work by moving the test earlier. This does
not change the generated file.
|
| |
|
|
|
|
| |
This will make future commits read better.
|
|
|
|
|
|
| |
Remove the code in Perl_ck_sort() that reads from PL_hintgv that sets these,
and the code in pp_sort that reads them and sets SORTf_STABLE and
SORTf_UNSTABLE (which were no longer read. Remove these too.)
|
|
|
|
|
|
|
|
| |
I realized that two base level utf8.h macros for UTF-8 could be
refactored to eliminate the conditionals in each. Those macros have
equivalents in the pure perl code changed by this commit, which I
changed before the utf8.h versions to verify that everything worked, by
verifying there was no difference in the generated tables.
|
|
|
|
|
|
|
|
|
| |
This commit makes is_HANGUL_ED_utf8_safe() return 0 unconditionally on
EBCDIC platforms. This means its callers don't have to care what
platform is running. Change the two callers to take advantage of this
The commit also changes the description of the macro to be slightly more
accurate
|
|
|
|
|
|
|
|
|
|
| |
This creates macros for the non-character code points so that, given the
length of the UTF-8 sequence, only those ones that have that length
match. This makes for more efficient processing, to be used in a future
commit.
The place where the length changes depends on the platform type, and
these macros will keep the code from having to worry about that.
|
|
|
|
| |
This saves that instruction
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Since the removal of PERL_OBJECT
(acfe0abcedaf592fb4b9cb69ce3468308ae99d91) PERL_IMPLICIT_CONTEXT and
MULTIPLICITY have been synonymous and they're being used interchangeably.
To simplify the code, this commit replaces all instances of
PERL_IMPLICIT_CONTEXT with MULTIPLICITY.
PERL_IMPLICIT_CONTEXT will stay defined for compatibility with XS
modules.
|
| |
|
| |
|
|
|
|
| |
Issue #18801
|
|
|
|
|
|
| |
* Apparently, first you bump, then you update perldelta.
* 5.35.0 *might* be released tomorrow (likely) but not certainly.
* I've set it to tomorrow so Module::CoreList won't be upset.
|
| |
|
|
|
|
| |
...then regen
|
|
|
|
|
|
|
|
|
|
| |
The G flag for a function indicates to not generate a PERL_ARGS_ASSERT
macro for the function. This macro is the only consumer of the NN and
NULLOK indicators to pointer arguments. Since the consumer is absent,
there is no need for them, and they shouldn't be required.
This commit does not change the check that If a NN is furnished, the G
flag is illegal.
|
|
|
|
| |
...and add "this is an experiment" to "isa"
|
|
|
|
|
| |
It is experimental, it would cause warnings, and frankly, I would
like to just inch toward its disappearance.
|
|
|
|
|
| |
Previously it was only supported if NV also was long double, but not when
it is either double or __float128.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
* Add feature, experimental warning, keyword
* Basic parsing
* Basic implementation as optree fragment
See also
https://github.com/Perl/perl5/issues/18504
|