aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/compiler
diff options
context:
space:
mode:
authorErik Verbruggen <erik.verbruggen@me.com>2013-12-02 16:35:17 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-12-03 09:50:51 +0100
commit7fdc5c34a5ea0ba2c98e63aa78094991d44c8f51 (patch)
tree80405e6c28fbbee99c15dda7a2723309daeaec57 /src/qml/compiler
parenta822c2c11c0c1f8b2a446dbcabd9f5d09e3f2e18 (diff)
V4 IR: change the worklist to a QSet for block scheduling.
Fixes a crash in octane. Change-Id: Ib72ac0b7a2941230a87543f30fcf7e55d7094886 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'src/qml/compiler')
-rw-r--r--src/qml/compiler/qv4ssa.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/qml/compiler/qv4ssa.cpp b/src/qml/compiler/qv4ssa.cpp
index 249dfab660..051691e2ad 100644
--- a/src/qml/compiler/qv4ssa.cpp
+++ b/src/qml/compiler/qv4ssa.cpp
@@ -1982,7 +1982,7 @@ QHash<BasicBlock *, BasicBlock *> scheduleBlocks(Function *function, const Domin
QSet<BasicBlock *> visited;
QVector<BasicBlock *> &sequence;
BasicBlock *currentGroup;
- QList<BasicBlock *> postponed;
+ QSet<BasicBlock *> postponed;
I(const DominatorTree &df, QVector<BasicBlock *> &sequence,
QHash<BasicBlock *, BasicBlock *> &startEndLoops)
@@ -1998,7 +1998,7 @@ QHash<BasicBlock *, BasicBlock *> scheduleBlocks(Function *function, const Domin
return;
if (bb->containingGroup() != currentGroup) {
- postponed.append(bb);
+ postponed.insert(bb);
return;
}
if (bb->isGroupStart())
@@ -2031,7 +2031,7 @@ QHash<BasicBlock *, BasicBlock *> scheduleBlocks(Function *function, const Domin
if (bb->isGroupStart()) {
currentGroup = bb->containingGroup();
startEndLoops.insert(bb, sequence.last());
- QList<BasicBlock *> p = postponed;
+ QSet<BasicBlock *> p = postponed;
foreach (BasicBlock *pBB, p)
DFS(pBB);
}
@@ -2040,7 +2040,7 @@ QHash<BasicBlock *, BasicBlock *> scheduleBlocks(Function *function, const Domin
void layout(BasicBlock *bb) {
sequence.append(bb);
visited.insert(bb);
- postponed.removeAll(bb);
+ postponed.remove(bb);
}
};