[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