Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: c7e68e9901f10990504069f86ac36e8d329b776c
https://github.com/WebKit/WebKit/commit/c7e68e9901f10990504069f86ac36e8d329b776c
Author: Michael Saboff <[email protected]>
Date: 2024-12-01 (Sun, 01 Dec 2024)
Changed paths:
A JSTests/stress/regexp-advance-2-non-bmp.js
M Source/JavaScriptCore/yarr/YarrJIT.cpp
M Source/JavaScriptCore/yarr/YarrJITRegisters.h
M Source/WTF/wtf/PlatformEnable.h
Log Message:
-----------
[Yarr] Fix and re-add non-BMP advancement by two from 276031@main
https://bugs.webkit.org/show_bug.cgi?id=283840
rdar://140709290
Reviewed by Yusuke Suzuki.
When we read a non-BMB code point, consisting of two surrogate code units, and
we fail to match any atom in the
body of a RegExp, we were incrementing the subject string index by 1 and going
back to the top of the loop to
start matching the pattern again. Now we dedicate a register to hold either 0
or 1 depending on the width of
the first character read for that loop iteration. When advancing the index for
the next iteration, we add the
value of that register to the updated index. This eliminates one iteration
through the matching loop for each
non-BMP surrogate code point that doesn't match.
When we try to match multiple characters, we always increment by 1, since the
multi character optimization
is based on all characters checked at once must be BMP characters.
* JSTests/stress/regexp-advance-2-non-bmp.js: Added.
(arrayToString):
(objectToString):
(dumpValue):
(compareArray):
(compareGroups):
(testRegExp):
(testRegExpSyntaxError):
* Source/JavaScriptCore/yarr/YarrJIT.cpp:
* Source/JavaScriptCore/yarr/YarrJITRegisters.h:
* Source/WTF/wtf/PlatformEnable.h:
Canonical link: https://commits.webkit.org/287202@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes