[SCM] WebKit Debian packaging branch, webkit-1.3, updated. upstream/1.3.7-4207-g178b198

msaboff at apple.com msaboff at apple.com
Sun Feb 20 23:16:51 UTC 2011


The following commit has been merged in the webkit-1.3 branch:
commit 480ad154e55d18a00bb75d6a22cd3b15e07679e1
Author: msaboff at apple.com <msaboff at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Wed Jan 19 17:58:15 2011 +0000

    2011-01-19  Michael Saboff  <msaboff at apple.com>
    
            Reviewed by Darin Adler.
    
            <rdar://problem/8882994> Regression: Simple nested backtrack hangs
            https://bugs.webkit.org/show_bug.cgi?id=52675
    
            The changeset (r76076) for https://bugs.webkit.org/show_bug.cgi?id=52540
            broke simple backtracking in some cases.  Reworked that change to
            link both jumps and labels.
    
            * yarr/YarrJIT.cpp:
            (JSC::Yarr::YarrGenerator::BacktrackDestination::hasBacktrackToLabel):
            (JSC::Yarr::YarrGenerator::TermGenerationState::propagateBacktrackingFrom):
            (JSC::Yarr::YarrGenerator::generateParenthesesSingle):
    2011-01-19  Michael Saboff  <msaboff at apple.com>
    
            Reviewed by Darin Adler.
    
            <rdar://problem/8882994> Regression: Simple nested backtrack hangs
            https://bugs.webkit.org/show_bug.cgi?id=52675
    
            New tests to support change.
    
            * fast/regex/parentheses-expected.txt:
            * fast/regex/script-tests/parentheses.js:
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@76133 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index 87fc379..4f12f06 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,15 @@
+2011-01-19  Michael Saboff  <msaboff at apple.com>
+
+        Reviewed by Darin Adler.
+
+        <rdar://problem/8882994> Regression: Simple nested backtrack hangs
+        https://bugs.webkit.org/show_bug.cgi?id=52675
+
+        New tests to support change.
+
+        * fast/regex/parentheses-expected.txt:
+        * fast/regex/script-tests/parentheses.js:
+
 2011-01-19  Csaba Osztrogonác  <ossy at webkit.org>
 
         Unreviewed.
diff --git a/LayoutTests/fast/regex/parentheses-expected.txt b/LayoutTests/fast/regex/parentheses-expected.txt
index d526b10..0f6a391 100644
--- a/LayoutTests/fast/regex/parentheses-expected.txt
+++ b/LayoutTests/fast/regex/parentheses-expected.txt
@@ -72,6 +72,8 @@ PASS regexp42.exec('') is ['',undefined,undefined]
 PASS regexp42.exec('4') is ['4','4','4']
 PASS regexp42.exec('4321') is ['4','4','4']
 PASS /(?!(?=r{0}){2,})|((z)?)?/gi.test('') is true
+PASS regexp43.exec('SSS') is ['']
+PASS regexp44.exec('SSS') is ['',undefined]
 PASS 'Hi Bob'.match(/(Rob)|(Bob)|(Robert)|(Bobby)/) is ['Bob',undefined,'Bob',undefined,undefined]
 PASS successfullyParsed is true
 
diff --git a/LayoutTests/fast/regex/script-tests/parentheses.js b/LayoutTests/fast/regex/script-tests/parentheses.js
index db4bf13..9031dec 100644
--- a/LayoutTests/fast/regex/script-tests/parentheses.js
+++ b/LayoutTests/fast/regex/script-tests/parentheses.js
@@ -193,6 +193,12 @@ shouldBe("regexp42.exec('4321')", "['4','4','4']");
 
 shouldBeTrue("/(?!(?=r{0}){2,})|((z)?)?/gi.test('')");
 
+var regexp43 = /(?!(?:\1+s))/;
+shouldBe("regexp43.exec('SSS')", "['']");
+
+var regexp44 = /(?!(?:\3+(s+?)))/gy;
+shouldBe("regexp44.exec('SSS')", "['',undefined]");
+
 shouldBe("'Hi Bob'.match(/(Rob)|(Bob)|(Robert)|(Bobby)/)", "['Bob',undefined,'Bob',undefined,undefined]");
 
 var successfullyParsed = true;
diff --git a/Source/JavaScriptCore/ChangeLog b/Source/JavaScriptCore/ChangeLog
index 7c9ea31..4abe7e1 100644
--- a/Source/JavaScriptCore/ChangeLog
+++ b/Source/JavaScriptCore/ChangeLog
@@ -1,3 +1,19 @@
+2011-01-19  Michael Saboff  <msaboff at apple.com>
+
+        Reviewed by Darin Adler.
+
+        <rdar://problem/8882994> Regression: Simple nested backtrack hangs
+        https://bugs.webkit.org/show_bug.cgi?id=52675
+
+        The changeset (r76076) for https://bugs.webkit.org/show_bug.cgi?id=52540
+        broke simple backtracking in some cases.  Reworked that change to 
+        link both jumps and labels.
+
+        * yarr/YarrJIT.cpp:
+        (JSC::Yarr::YarrGenerator::BacktrackDestination::hasBacktrackToLabel):
+        (JSC::Yarr::YarrGenerator::TermGenerationState::propagateBacktrackingFrom):
+        (JSC::Yarr::YarrGenerator::generateParenthesesSingle):
+
 2011-01-19  Pavel Podivilov  <podivilov at chromium.org>
 
         Reviewed by Yury Semikhatsky.
diff --git a/Source/JavaScriptCore/yarr/YarrJIT.cpp b/Source/JavaScriptCore/yarr/YarrJIT.cpp
index 491d46d..34a6017 100644
--- a/Source/JavaScriptCore/yarr/YarrJIT.cpp
+++ b/Source/JavaScriptCore/yarr/YarrJIT.cpp
@@ -618,6 +618,11 @@ class YarrGenerator : private MacroAssembler {
                 m_backtrackToLabel = backtrackToLabel;
         }
 
+        bool hasBacktrackToLabel()
+        {
+            return m_backtrackToLabel;
+        }
+
         void setBacktrackJumpList(JumpList* jumpList)
         {
             m_backtrackType = BacktrackJumpList;
@@ -996,6 +1001,10 @@ class YarrGenerator : private MacroAssembler {
         {
             if (doJump)
                 m_backtrack.jumpToBacktrack(generator, backtrack.getBacktrackJumps());
+
+            if (m_backtrack.isLabel() && backtrack.hasBacktrackToLabel())
+                backtrack.linkBacktrackToLabel(m_backtrack.getLabel());
+
             if (backtrack.hasDestination()) {
                 if (m_backtrack.hasDataLabel())
                     generator->m_expressionState.addDataLabelToNextIteration(m_backtrack.getDataLabel());
@@ -1654,13 +1663,8 @@ class YarrGenerator : private MacroAssembler {
             BacktrackDestination& parenthesesBacktrack = parenthesesState.getBacktrackDestination();
             BacktrackDestination& stateBacktrack = state.getBacktrackDestination();
 
-            // If we have a backtrack label, use it for the parenthesis
-            if (stateBacktrack.isLabel())
-                parenthesesBacktrack.linkBacktrackToLabel(stateBacktrack.getLabel());
-            else {
-                state.propagateBacktrackingFrom(this, parenthesesBacktrack);
-                stateBacktrack.copyBacktrackToLabel(parenthesesBacktrack);
-            }
+            state.propagateBacktrackingFrom(this, parenthesesBacktrack);
+            stateBacktrack.copyBacktrackToLabel(parenthesesBacktrack);
 
             m_expressionState.decrementParenNestingLevel();
         } else {

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list