Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: b2090782b354f624c5ee56b37797a1240fa5eb29
      
https://github.com/Perl/perl5/commit/b2090782b354f624c5ee56b37797a1240fa5eb29
  Author: Karl Williamson <[email protected]>
  Date:   2019-11-20 (Wed, 20 Nov 2019)

  Changed paths:
    M regcomp.c

  Log Message:
  -----------
  regcomp.c fix comments, white-space

One comment was just a typo, another was erroneous


  Commit: dedd1cfb64ad71a1566a1256d67f1ad4416322d5
      
https://github.com/Perl/perl5/commit/dedd1cfb64ad71a1566a1256d67f1ad4416322d5
  Author: Karl Williamson <[email protected]>
  Date:   2019-11-20 (Wed, 20 Nov 2019)

  Changed paths:
    M embed.fnc
    M embed.h
    M proto.h
    M regcomp.c

  Log Message:
  -----------
  find_first_differing_byte_pos


  Commit: 21c3fd9dd0a7a389c901af03acc1907666ee1870
      
https://github.com/Perl/perl5/commit/21c3fd9dd0a7a389c901af03acc1907666ee1870
  Author: Karl Williamson <[email protected]>
  Date:   2019-11-20 (Wed, 20 Nov 2019)

  Changed paths:
    M regcomp.c

  Log Message:
  -----------
  regcomp.c: DTRT in av_store()

We should be increasing the ref count in the scalars.  If those aren't
needed past the end of the function doing the av_store, their ref count
can be decremented there.

Otherwise, things are inconsistent, and error prone.


  Commit: 34924db0919c191e271602c82cb2de7784fc63a4
      
https://github.com/Perl/perl5/commit/34924db0919c191e271602c82cb2de7784fc63a4
  Author: Karl Williamson <[email protected]>
  Date:   2019-11-20 (Wed, 20 Nov 2019)

  Changed paths:
    M embed.fnc
    M pod/perldebguts.pod
    M regcomp.c
    M regcomp.h
    M regcomp.sym
    M regexec.c
    M regnodes.h
    M t/re/pat.t

  Log Message:
  -----------
  Add ANYOFHs regnode

This node is like ANYOFHb, but is used when more than one leading byte
is the same in all the matched code points.

ANYOFHb is used to avoid having to convert from UTF-8 to code point for
something that won't match.  It checks that the first byte in the UTF-8
encoded target is the desired one, thus ruling out most of the possible
code points.

But for higher code points that require longer UTF-8 sequences, many
many non-matching code points pass this filter.  Its almost 200K that it
is ineffective for for code points above 0xFFFF.

This commit creates a new node type that addresses this problem.
Instead of a single byte, it stores as many leading bytes that are the
same for all code points that match the class.  For many classes, that
will cut down the number of possible false positives by a huge amount
before having to convert to code point to make the final determination.

This regnode adds a UTF-8 string at the end.  It is still much smaller,
even in the rare worst case, than a plain ANYOF node because the maximum
string length, 15 bytes, is still shorter than the 32-byte bitmap that
is present in a plain ANYOF.  Most of the time the added string will
instead be at most 4 bytes.


Compare: https://github.com/Perl/perl5/compare/ebee057d3ec5...34924db0919c

Reply via email to