diff options
author | Erik Verbruggen <erik.verbruggen@me.com> | 2013-12-02 16:35:17 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-12-03 09:50:51 +0100 |
commit | 7fdc5c34a5ea0ba2c98e63aa78094991d44c8f51 (patch) | |
tree | 80405e6c28fbbee99c15dda7a2723309daeaec57 /src | |
parent | a822c2c11c0c1f8b2a446dbcabd9f5d09e3f2e18 (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')
-rw-r--r-- | src/qml/compiler/qv4ssa.cpp | 8 |
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); } }; |