develooper Front page | perl.perl5.changes | Postings from September 2019

[perl.git] branch smoke-me/khw-lexact created.v5.31.4-38-ge72caa651f

Karl Williamson
September 26, 2019 04:11
[perl.git] branch smoke-me/khw-lexact created.v5.31.4-38-ge72caa651f
Message ID:
In perl.git, the branch smoke-me/khw-lexact has been created


        at  e72caa651f0f75647c6a3e4af9b1eebb3c57ebed (commit)

- Log -----------------------------------------------------------------
commit e72caa651f0f75647c6a3e4af9b1eebb3c57ebed
Author: Karl Williamson <>
Date:   Wed Sep 25 22:10:17 2019 -0600


commit 96da3fcf6bbe92d9bc7442560dcaecad43498237
Author: Karl Williamson <>
Date:   Wed Sep 25 10:12:32 2019 -0600

    XXX wrong stuff in this commit: Add regnode LEXACT, for long strings
    This commit adds a new regnode for string that don't fit in a regular
    one, and adds a structure for that regnode to use.  Actually using them
    is deferred to the next commit.
    This new structure is needed because the previous structure only allows
    for an 8 bit length field, 255 max bytes.  This commit puts the length
    instead in a new field, the same place single-argument regnodes put
    their argument.  Hence this long string is an extra 32 bits of overhead,
    but at no string length is this node ever bigger than the combination of
    the smaller nodes it replaces.
    I also considered simply combining the original 8 bit length field
    (which is now unused) with the first byte of the string field to get a
    16 bit length, and have the actual string be offset by 1.  But I
    rejected that because it would mean the string would usually not be
    aligned, slowing down memory accesses.
    This new LEXACT regnode holds about what 4K regular EXACT ones hold.
    That means it can handle 1MB patterns.  The comments give ideas
    for expanding that should it become necessary or desirable.
    The overhead in regular EXACT regnodes is 1.6% (4 bytes every 255
    bytes).  The overhead in LEXACT shrinks to close to 0 when close to
    completely full.  Thus a full LEXACT node uses about 16K fewer bytes of
    overhead than the equivalent regular size regnodes would.
    Besides the space advantage, any hardware acceleration in memcmp
    can be done in much bigger chunks, and otherwise the memcmp inner loop
    will run many more times in a row, and our outer loop that calls it,
    correspondingly fewer.

commit 8f44c41ea9289f5046bdf5e9b188f7e97fe0a548
Author: Karl Williamson <>
Date:   Sun Sep 22 16:12:07 2019 -0600

    XXX regcomp.c: Change handling of filled EXACT nodes
    This changes the detection mechanism to, just before we otherwise would
    write to the node, we see if that would be out of bounds, and if so,
    instead break out of the loop to handle a full node.
    This improves the packing of nodes, especially under /i, from the
    previous mechanism.  But more importantly, it set things up so that we
    can potentially increase the node size as we go along.
    This also changes the handling of XXX

commit d4c24262fa0bd508c468744bc2c905ce3fb8467f
Author: Karl Williamson <>
Date:   Sun Sep 22 15:26:03 2019 -0600

    regcomp.h: Add comments

commit 40232ae7a626eb32ea81e5ab71d6bf3f0b97ecdf
Author: Karl Williamson <>
Date:   Sun Sep 22 15:25:23 2019 -0600

    regcomp.h: Remove obsolete macro
    This is no longer used

commit e3ea8bad6fcbb703d4c2e1df3ac7fe2324c9cf1b
Author: Karl Williamson <>
Date:   Sun Sep 22 15:09:05 2019 -0600

    regcomp.sym Improve descriptions of some nodes
    These are slightly shorter and remove mention of the length, which is
    problematic, and is covered in the description for EXACT

commit 1935af33cd1b3d2245630c306b294172a470e1c1
Author: Karl Williamson <>
Date:   Sat Sep 21 14:34:20 2019 -0600

    regcomp.c: Rename three variables
    One of the variables is misnamed,  the upper_fill indicates that the
    node has to be left not completely filled.  Comments will be added in a
    later commit.
    The other two are renamed in preparation for future changes to more
    accurately describe their new purposes.

commit f514f2371e1b81c368b9978a5653d17c78ba8112
Author: Karl Williamson <>
Date:   Sat Sep 21 13:31:37 2019 -0600

    regcomp.c: White-space only, comments
    Outdent a block that was doubly indented.  Change some other white space
    and fix grammar in a comment

commit 05b12086d7cc02b5cb3af9c2e20aba9d0a299479
Author: Karl Williamson <>
Date:   Sat Sep 21 13:24:33 2019 -0600

    regcomp: Use new set macro to store a value
    This is in preparation for the current mechanism in a later commit to
    become a not legal lhs

commit e3e1efc7d2cbd74922973b8c9e4a8349e6cd53b5
Author: Karl Williamson <>
Date:   Sat Sep 21 13:18:12 2019 -0600

    regcomp.h: Parenthesize param in macro expansion
    This is always a good idea

commit 72df2b06047ef251497f14c20992964e54bb3019
Author: Karl Williamson <>
Date:   Sat Sep 21 13:14:25 2019 -0600

    regcomp.h: Remove duplicate macro expansion
    This macro has the same definition as another.

commit e47975455f42f28aa359c63b391014c13e360c43
Author: Karl Williamson <>
Date:   Sun Sep 22 15:48:51 2019 -0600

    perlrun: Note that -W can't be in PERL5OPT

commit 789a46663105fd5ff16cc726e8d07140e32d8fdc
Author: Karl Williamson <>
Date:   Wed Jun 26 13:02:35 2019 -0600

    XXX Configure


Perl5 Master Repository Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About