Skip to content
This repository was archived by the owner on Jun 1, 2023. It is now read-only.

Commit ade850b

Browse files
author
Reini Urban
committed
mderef_u: docs and B::aux_list()
Note: mderef_u is not backportable to 5.24.1. We changed the internal MDEREF action size from 7 to 8 bits. Closes #126
1 parent e384950 commit ade850b

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

ext/B/B.xs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1470,6 +1470,7 @@ aux_list(o)
14701470
case MDEREF_INDEX_none:
14711471
last = 1;
14721472
break;
1473+
case MDEREF_INDEX_const|MDEREF_INDEX_uoob:
14731474
case MDEREF_INDEX_const:
14741475
if (is_hash)
14751476
PUSH_SV(++items);

pod/perlcdelta.pod

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ L<perl5240cdelta>, which describes differences between 5.22.3 and 5.24.0.
1414

1515
=head1 Notice
1616

17-
perl5.24.1 was security update to non-existing problem. cperl added
17+
perl5.24.1 was security update to a non-existing problem. cperl added
1818
PERLIO_DEBUG as optional handle to redirect DEBUGGING outout via -Dx
1919
switches to. This is only usable with DEBUGGING perls, which are not
2020
used in production, only during development.
@@ -35,6 +35,20 @@ L</Selected Bug Fixes> section.
3535

3636
=item *
3737

38+
The C<multideref> OP has a new C<MDEREF_INDEX_uoob> flag, which can
39+
only appear together with C<MDEREF_INDEX_const>. This is used for
40+
unchecked out-of-bounds checks for arrays, to use the previous
41+
AvSHAPED array optimizations with multideref OPs also.
42+
43+
But multideref ops in loops are not yet compiled to use
44+
C<MDEREF_INDEX_uoob> when the index is ensured to be inside the
45+
array. This oob optimization is expected soon.
46+
47+
C<MDEREF_INDEX_MASK> changed to 0x70, C<MDEREF_MASK> to 0x10F, the
48+
C<MDEREF_SHIFT> size from 7 to 8.
49+
50+
=item *
51+
3852
The new C<strQEc>/C<strNEc> macros are used instead of
3953
C<strEQ(s,"constant")>. This enables word-wise comparison via memcpy,
4054
in opposite of byte-wise comparisons via strcmp with already known

0 commit comments

Comments
 (0)