2009-04-22  Gavin Barraclough  <barraclough@apple.com>

        Reviewed by Sam "Blackbeard" Weinig.

        Improvements to YARR JIT.  This patch expands support in three key areas:
            * Add (temporary) support for falling back to PCRE for expressions not supported.
            * Add support for x86_64 and Windows.
            * Add support for singly quantified parentheses (? and ??), alternatives within
              parentheses, and parenthetical assertions.

        * runtime/RegExp.cpp:
        (JSC::RegExp::match):
        * yarr/RegexJIT.cpp:
        (JSC::Yarr::RegexGenerator::storeToFrame):
        (JSC::Yarr::RegexGenerator::storeToFrameWithPatch):
        (JSC::Yarr::RegexGenerator::loadFromFrameAndJump):
        (JSC::Yarr::RegexGenerator::AlternativeBacktrackRecord::AlternativeBacktrackRecord):
        (JSC::Yarr::RegexGenerator::TermGenerationState::resetAlternative):
        (JSC::Yarr::RegexGenerator::TermGenerationState::resetTerm):
        (JSC::Yarr::RegexGenerator::TermGenerationState::jumpToBacktrack):
        (JSC::Yarr::RegexGenerator::TermGenerationState::plantJumpToBacktrackIfExists):
        (JSC::Yarr::RegexGenerator::TermGenerationState::addBacktrackJump):
        (JSC::Yarr::RegexGenerator::TermGenerationState::linkAlternativeBacktracks):
        (JSC::Yarr::RegexGenerator::TermGenerationState::propagateBacktrackingFrom):
        (JSC::Yarr::RegexGenerator::genertateAssertionBOL):
        (JSC::Yarr::RegexGenerator::genertateAssertionEOL):
        (JSC::Yarr::RegexGenerator::matchAssertionWordchar):
        (JSC::Yarr::RegexGenerator::genertateAssertionWordBoundary):
        (JSC::Yarr::RegexGenerator::genertatePatternCharacterSingle):
        (JSC::Yarr::RegexGenerator::genertatePatternCharacterPair):
        (JSC::Yarr::RegexGenerator::genertatePatternCharacterFixed):
        (JSC::Yarr::RegexGenerator::genertatePatternCharacterGreedy):
        (JSC::Yarr::RegexGenerator::genertatePatternCharacterNonGreedy):
        (JSC::Yarr::RegexGenerator::genertateCharacterClassSingle):
        (JSC::Yarr::RegexGenerator::genertateCharacterClassFixed):
        (JSC::Yarr::RegexGenerator::genertateCharacterClassGreedy):
        (JSC::Yarr::RegexGenerator::genertateCharacterClassNonGreedy):
        (JSC::Yarr::RegexGenerator::generateParenthesesDisjunction):
        (JSC::Yarr::RegexGenerator::generateParenthesesSingle):
        (JSC::Yarr::RegexGenerator::generateParentheticalAssertion):
        (JSC::Yarr::RegexGenerator::generateTerm):
        (JSC::Yarr::RegexGenerator::generateDisjunction):
        (JSC::Yarr::RegexGenerator::generateEnter):
        (JSC::Yarr::RegexGenerator::generateReturn):
        (JSC::Yarr::RegexGenerator::RegexGenerator):
        (JSC::Yarr::RegexGenerator::generate):
        (JSC::Yarr::RegexGenerator::compile):
        (JSC::Yarr::RegexGenerator::generationFailed):
        (JSC::Yarr::jitCompileRegex):
        (JSC::Yarr::executeRegex):
        * yarr/RegexJIT.h:
        (JSC::Yarr::RegexCodeBlock::RegexCodeBlock):
        (JSC::Yarr::RegexCodeBlock::~RegexCodeBlock):



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@42754 268f45cc-cd09-0410-ab3c-d52691b4dbfc
4 files changed