Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 868302168e9b00689b51cc75af552cab0fc82133 https://github.com/WebKit/WebKit/commit/868302168e9b00689b51cc75af552cab0fc82133 Author: Daniel Liu <daniel_l...@apple.com> Date: 2025-02-06 (Thu, 06 Feb 2025)
Changed paths: A JSTests/stress/regexp-modifiers-interpreter.js A JSTests/stress/regexp-modifiers.js M JSTests/test262/config.yaml M Source/JavaScriptCore/yarr/YarrErrorCode.cpp M Source/JavaScriptCore/yarr/YarrErrorCode.h M Source/JavaScriptCore/yarr/YarrFlags.h M Source/JavaScriptCore/yarr/YarrInterpreter.cpp M Source/JavaScriptCore/yarr/YarrInterpreter.h M Source/JavaScriptCore/yarr/YarrJIT.cpp M Source/JavaScriptCore/yarr/YarrParser.h M Source/JavaScriptCore/yarr/YarrPattern.cpp M Source/JavaScriptCore/yarr/YarrPattern.h M Source/JavaScriptCore/yarr/YarrSyntaxChecker.cpp M Source/WebCore/contentextensions/URLFilterParser.cpp Log Message: ----------- Implement RegExp Modifiers https://bugs.webkit.org/show_bug.cgi?id=287099 rdar://131580854 Reviewed by Michael Saboff. This patch implements RegExp Modifiers. The spec can be found at https://github.com/tc39/proposal-regexp-modifiers This patch adds support to both the interpreter and JIT tiers for RegExp modifiers. A lot of the changes are just routing the modified flags through the RegExp engine. * JSTests/stress/regexp-modifiers-interpreter.js: Added. (arrayToString): (objectToString): (dumpValue): (compareArray): (compareGroups): (testRegExp): (testRegExpSyntaxError): * JSTests/stress/regexp-modifiers.js: Added. (arrayToString): (objectToString): (dumpValue): (compareArray): (compareGroups): (testRegExp): (testRegExpSyntaxError): * JSTests/test262/config.yaml: * Source/JavaScriptCore/yarr/YarrErrorCode.cpp: (JSC::Yarr::errorMessage): (JSC::Yarr::errorToThrow): * Source/JavaScriptCore/yarr/YarrErrorCode.h: * Source/JavaScriptCore/yarr/YarrFlags.h: * Source/JavaScriptCore/yarr/YarrInterpreter.cpp: (JSC::Yarr::Interpreter::tryConsumeBackReference): (JSC::Yarr::Interpreter::matchAssertionBOL): (JSC::Yarr::Interpreter::matchAssertionEOL): (JSC::Yarr::Interpreter::matchAssertionWordBoundary): (JSC::Yarr::Interpreter::matchDotStarEnclosure): (JSC::Yarr::ByteCompiler::ByteCompiler): (JSC::Yarr::ByteCompiler::checkInput): (JSC::Yarr::ByteCompiler::uncheckInput): (JSC::Yarr::ByteCompiler::haveCheckedInput): (JSC::Yarr::ByteCompiler::assertionBOL): (JSC::Yarr::ByteCompiler::assertionEOL): (JSC::Yarr::ByteCompiler::assertionWordBoundary): (JSC::Yarr::ByteCompiler::atomPatternCharacter): (JSC::Yarr::ByteCompiler::atomCharacterClass): (JSC::Yarr::ByteCompiler::atomBackReference): (JSC::Yarr::ByteCompiler::atomParenthesesOnceBegin): (JSC::Yarr::ByteCompiler::atomParenthesesTerminalBegin): (JSC::Yarr::ByteCompiler::atomParenthesesSubpatternBegin): (JSC::Yarr::ByteCompiler::atomParentheticalAssertionBegin): (JSC::Yarr::ByteCompiler::atomParentheticalAssertionEnd): (JSC::Yarr::ByteCompiler::assertionDotStarEnclosure): (JSC::Yarr::ByteCompiler::closeAlternative): (JSC::Yarr::ByteCompiler::closeBodyAlternative): (JSC::Yarr::ByteCompiler::atomParenthesesSubpatternEnd): (JSC::Yarr::ByteCompiler::atomParenthesesOnceEnd): (JSC::Yarr::ByteCompiler::atomParenthesesTerminalEnd): (JSC::Yarr::ByteCompiler::regexBegin): (JSC::Yarr::ByteCompiler::alternativeBodyDisjunction): (JSC::Yarr::ByteCompiler::alternativeDisjunction): (JSC::Yarr::ByteCompiler::emitDisjunction): * Source/JavaScriptCore/yarr/YarrInterpreter.h: (JSC::Yarr::ByteTerm::ByteTerm): (JSC::Yarr::ByteTerm::BOL): (JSC::Yarr::ByteTerm::CheckInput): (JSC::Yarr::ByteTerm::UncheckInput): (JSC::Yarr::ByteTerm::HaveCheckedInput): (JSC::Yarr::ByteTerm::EOL): (JSC::Yarr::ByteTerm::WordBoundary): (JSC::Yarr::ByteTerm::BackReference): (JSC::Yarr::ByteTerm::BodyAlternativeBegin): (JSC::Yarr::ByteTerm::BodyAlternativeDisjunction): (JSC::Yarr::ByteTerm::BodyAlternativeEnd): (JSC::Yarr::ByteTerm::AlternativeBegin): (JSC::Yarr::ByteTerm::AlternativeDisjunction): (JSC::Yarr::ByteTerm::AlternativeEnd): (JSC::Yarr::ByteTerm::SubpatternBegin): (JSC::Yarr::ByteTerm::SubpatternEnd): (JSC::Yarr::ByteTerm::ParentheticalAssertionBegin): (JSC::Yarr::ByteTerm::ParentheticalAssertionEnd): (JSC::Yarr::ByteTerm::DotStarEnclosure): (JSC::Yarr::ByteTerm::ignoreCase): (JSC::Yarr::ByteTerm::multiline): (JSC::Yarr::ByteTerm::dotAll): (JSC::Yarr::BytecodePattern::BytecodePattern): * Source/JavaScriptCore/yarr/YarrJIT.cpp: * Source/JavaScriptCore/yarr/YarrParser.h: (JSC::Yarr::Parser::parseParenthesesBegin): * Source/JavaScriptCore/yarr/YarrPattern.cpp: (JSC::Yarr::CharacterClassConstructor::putUnicodeIgnoreCase): (JSC::Yarr::CharacterClassConstructor::setIsCaseInsensitive): (JSC::Yarr::YarrPatternConstructor::YarrPatternConstructor): (JSC::Yarr::YarrPatternConstructor::resetForReparsing): (JSC::Yarr::YarrPatternConstructor::assertionBOL): (JSC::Yarr::YarrPatternConstructor::assertionEOL): (JSC::Yarr::YarrPatternConstructor::assertionWordBoundary): (JSC::Yarr::YarrPatternConstructor::atomPatternCharacter): (JSC::Yarr::YarrPatternConstructor::atomBuiltInCharacterClass): (JSC::Yarr::YarrPatternConstructor::atomCharacterClassBegin): (JSC::Yarr::YarrPatternConstructor::atomCharacterClassBuiltIn): (JSC::Yarr::YarrPatternConstructor::atomCharacterClassPushNested): (JSC::Yarr::YarrPatternConstructor::atomCharacterClassEnd): (JSC::Yarr::YarrPatternConstructor::atomParenthesesSubpatternBegin): (JSC::Yarr::YarrPatternConstructor::atomParentheticalAssertionBegin): (JSC::Yarr::YarrPatternConstructor::atomParentheticalModifierBegin): (JSC::Yarr::YarrPatternConstructor::atomParenthesesEnd): (JSC::Yarr::YarrPatternConstructor::atomBackReference): (JSC::Yarr::YarrPatternConstructor::atomNamedBackReference): (JSC::Yarr::YarrPatternConstructor::atomNamedForwardReference): (JSC::Yarr::YarrPatternConstructor::optimizeBOL): (JSC::Yarr::YarrPatternConstructor::optimizeDotStarWrappedExpressions): (JSC::Yarr::YarrPatternConstructor::ParenthesisContext::SavedContext::SavedContext): (JSC::Yarr::YarrPatternConstructor::ParenthesisContext::SavedContext::restore): (JSC::Yarr::YarrPatternConstructor::ParenthesisContext::push): (JSC::Yarr::YarrPatternConstructor::ParenthesisContext::pop): (JSC::Yarr::YarrPatternConstructor::ParenthesisContext::setModifier): (JSC::Yarr::YarrPatternConstructor::ParenthesisContext::isModifier const): (JSC::Yarr::YarrPatternConstructor::ParenthesisContext::setFlags): (JSC::Yarr::YarrPatternConstructor::ParenthesisContext::flags const): (JSC::Yarr::YarrPatternConstructor::ParenthesisContext::reset): (JSC::Yarr::YarrPatternConstructor::ignoreCase const): (JSC::Yarr::YarrPatternConstructor::multiline const): (JSC::Yarr::YarrPatternConstructor::dotAll const): (JSC::Yarr::YarrPattern::compile): (JSC::Yarr::PatternTerm::dump): * Source/JavaScriptCore/yarr/YarrPattern.h: (JSC::Yarr::PatternTerm::PatternTerm): (JSC::Yarr::PatternTerm::ForwardReference): (JSC::Yarr::PatternTerm::BOL): (JSC::Yarr::PatternTerm::EOL): (JSC::Yarr::PatternTerm::WordBoundary): (JSC::Yarr::PatternTerm::ignoreCase): (JSC::Yarr::PatternTerm::multiline): (JSC::Yarr::PatternTerm::dotAll): * Source/JavaScriptCore/yarr/YarrSyntaxChecker.cpp: (JSC::Yarr::SyntaxChecker::atomParentheticalModifierBegin): Canonical link: https://commits.webkit.org/289955@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes