Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: caa31552bab4d322ec1ced2f059d93f2c2fd45b4
https://github.com/WebKit/WebKit/commit/caa31552bab4d322ec1ced2f059d93f2c2fd45b4
Author: Michael Saboff <[email protected]>
Date: 2023-08-15 (Tue, 15 Aug 2023)
Changed paths:
M JSTests/stress/regexp-lookbehind.js
M Source/JavaScriptCore/yarr/YarrInterpreter.cpp
M Source/JavaScriptCore/yarr/YarrPattern.cpp
Log Message:
-----------
Positive look-behind RegExp doesn't match in JSC but does match in V8
https://bugs.webkit.org/show_bug.cgi?id=259536
rdar://112952197
Reviewed by Yusuke Suzuki.
The reported bug indicated one issue. We were performing the beginning of line
/ end of line assertion optimization
on lookbehinds that contain BOL's / EOL's. Given that we match backwards for
lookbehinds while doing soft
"do we have enough input" checks, we won't properly match such an assertion as
the BOL assertion optimization
assumes that the BOL is at position 0 and not some prior location in the
lookbehind.
After fixing that bug and adding more tests, discovered that we don't properly
handle lookbehinds with alternatives
of different minimum lengths. We emit a single HaveCheckedInput for the
minimum size of the alternation. Added a
check to emit a HaveCheckedInput for any alternative that had a minimum size
larger that the minimum for the whole
alternation.
Updated tests accordingly.
* JSTests/stress/regexp-lookbehind.js:
(testRegExp.v):
(d.v):
(testRegExp.v.sv):
(testRegExp.v.sv.Rev):
* Source/JavaScriptCore/yarr/YarrInterpreter.cpp:
(JSC::Yarr::ByteCompiler::emitDisjunction):
* Source/JavaScriptCore/yarr/YarrPattern.cpp:
(JSC::Yarr::YarrPatternConstructor::assertionBOL):
(JSC::Yarr::YarrPatternConstructor::copyDisjunction):
Canonical link: https://commits.webkit.org/266912@main
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes