Ignore:
Timestamp:
Feb 22, 2012, 12:43:52 AM (13 years ago)
Author:
[email protected]
Message:

Short circuit fixed for a 16 bt pattern character and an 8 bit string.
https://bugs.webkit.org/show_bug.cgi?id=75602

Patch by Hojong Han <[email protected]> on 2012-02-22
Reviewed by Gavin Barraclough.

  • yarr/YarrJIT.cpp:

(JSC::Yarr::YarrGenerator::backtrackPatternCharacterGreedy):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/yarr/YarrJIT.cpp

    r107647 r108456  
    844844        YarrOp& op = m_ops[opIndex];
    845845        PatternTerm* term = op.m_term;
     846        UChar ch = term->patternCharacter;
    846847
    847848        const RegisterID countRegister = regT1;
     
    849850        m_backtrackingState.link(this);
    850851
    851         loadFromFrame(term->frameLocation, countRegister);
    852         m_backtrackingState.append(branchTest32(Zero, countRegister));
    853         sub32(TrustedImm32(1), countRegister);
    854         sub32(TrustedImm32(1), index);
    855         jump(op.m_reentry);
     852        if ((ch > 0xff) && (m_charSize == Char8)) {
     853            // Have a 16 bit pattern character and an 8 bit string - short circuit
     854            m_backtrackingState.append(op.m_jumps);
     855        } else {
     856            loadFromFrame(term->frameLocation, countRegister);
     857            m_backtrackingState.append(branchTest32(Zero, countRegister));
     858            sub32(TrustedImm32(1), countRegister);
     859            sub32(TrustedImm32(1), index);
     860            jump(op.m_reentry);
     861        }
    856862    }
    857863
Note: See TracChangeset for help on using the changeset viewer.