diff options
author | Erik Verbruggen <erik.verbruggen@me.com> | 2013-12-19 10:37:34 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-01-08 17:04:19 +0100 |
commit | 2f9099443d9acd6583e92785afbb38b2e4dcbfd5 (patch) | |
tree | e56a31ef91f913e0f00c63b9024b769bd17ffa02 /src/qml/qml/qqmlcompiler.cpp | |
parent | 5657d00a92b34aa7528dd7cf7401ff7f493b68c5 (diff) |
V4: optimize dominator frontier storage.
Changes the dominator frontier storage from a set of basic-blocks for
every basic-block to a BasicBlockSet for every basic-block. This new
class stores a maximum of 8 nodes in a vector, and switches to a bit
vector when going beyond 8 nodes.
This is important in two cases: most basic-blocks have 2-3 nodes in the
frontier, and an array is faster than a set in these cases. The few
cases where the frontier goes beyond 8 nodes, is when a switch
statement is used with lots of cases that all fall-through.
On regress-74474-003.js this reduces peak memory usage from 1.68G
to 60M. The switch statement in this test results in 27000 basic-blocks.
Change-Id: I42646522ba9f8642d42a5d70fc6b760bb47ae69f
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/qml/qml/qqmlcompiler.cpp')
0 files changed, 0 insertions, 0 deletions