Title: [108456] trunk/Source/_javascript_Core
Revision
108456
Author
[email protected]
Date
2012-02-22 00:43:52 -0800 (Wed, 22 Feb 2012)

Log 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):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (108455 => 108456)


--- trunk/Source/_javascript_Core/ChangeLog	2012-02-22 08:37:18 UTC (rev 108455)
+++ trunk/Source/_javascript_Core/ChangeLog	2012-02-22 08:43:52 UTC (rev 108456)
@@ -1,3 +1,13 @@
+2012-02-22  Hojong Han  <[email protected]>
+
+        Short circuit fixed for a 16 bt pattern character and an 8 bit string.
+        https://bugs.webkit.org/show_bug.cgi?id=75602
+
+        Reviewed by Gavin Barraclough.
+
+        * yarr/YarrJIT.cpp:
+        (JSC::Yarr::YarrGenerator::backtrackPatternCharacterGreedy):
+
 2012-02-21  Filip Pizlo  <[email protected]>
 
         Build fix for systems with case sensitive disks.

Modified: trunk/Source/_javascript_Core/yarr/YarrJIT.cpp (108455 => 108456)


--- trunk/Source/_javascript_Core/yarr/YarrJIT.cpp	2012-02-22 08:37:18 UTC (rev 108455)
+++ trunk/Source/_javascript_Core/yarr/YarrJIT.cpp	2012-02-22 08:43:52 UTC (rev 108456)
@@ -843,16 +843,22 @@
     {
         YarrOp& op = m_ops[opIndex];
         PatternTerm* term = op.m_term;
+        UChar ch = term->patternCharacter;
 
         const RegisterID countRegister = regT1;
 
         m_backtrackingState.link(this);
 
-        loadFromFrame(term->frameLocation, countRegister);
-        m_backtrackingState.append(branchTest32(Zero, countRegister));
-        sub32(TrustedImm32(1), countRegister);
-        sub32(TrustedImm32(1), index);
-        jump(op.m_reentry);
+        if ((ch > 0xff) && (m_charSize == Char8)) {
+            // Have a 16 bit pattern character and an 8 bit string - short circuit
+            m_backtrackingState.append(op.m_jumps);
+        } else {
+            loadFromFrame(term->frameLocation, countRegister);
+            m_backtrackingState.append(branchTest32(Zero, countRegister));
+            sub32(TrustedImm32(1), countRegister);
+            sub32(TrustedImm32(1), index);
+            jump(op.m_reentry);
+        }
     }
 
     void generatePatternCharacterNonGreedy(size_t opIndex)
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to