In perl.git, the branch smoke-me/khw-lexact has been created
<https://perl5.git.perl.org/perl.git/commitdiff/e72caa651f0f75647c6a3e4af9b1eebb3c57ebed?hp=0000000000000000000000000000000000000000>
at e72caa651f0f75647c6a3e4af9b1eebb3c57ebed (commit)
- Log -----------------------------------------------------------------
commit e72caa651f0f75647c6a3e4af9b1eebb3c57ebed
Author: Karl Williamson <[email protected]>
Date: Wed Sep 25 22:10:17 2019 -0600
smoke
commit 96da3fcf6bbe92d9bc7442560dcaecad43498237
Author: Karl Williamson <[email protected]>
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 <[email protected]>
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 <[email protected]>
Date: Sun Sep 22 15:26:03 2019 -0600
regcomp.h: Add comments
commit 40232ae7a626eb32ea81e5ab71d6bf3f0b97ecdf
Author: Karl Williamson <[email protected]>
Date: Sun Sep 22 15:25:23 2019 -0600
regcomp.h: Remove obsolete macro
This is no longer used
commit e3ea8bad6fcbb703d4c2e1df3ac7fe2324c9cf1b
Author: Karl Williamson <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
Date: Sun Sep 22 15:48:51 2019 -0600
perlrun: Note that -W can't be in PERL5OPT
commit 789a46663105fd5ff16cc726e8d07140e32d8fdc
Author: Karl Williamson <[email protected]>
Date: Wed Jun 26 13:02:35 2019 -0600
XXX Configure
-----------------------------------------------------------------------
--
Perl5 Master Repository