summaryrefslogtreecommitdiff
path: root/compiler/optimizing/nodes.h
diff options
context:
space:
mode:
author Aart Bik <ajcbik@google.com> 2016-09-14 10:52:13 -0700
committer Aart Bik <ajcbik@google.com> 2016-09-14 14:09:27 -0700
commit20e9db6db787e007e7032878c9899b28ec43e93f (patch)
tree9d2071fd7f286ccf408044b4366714a481351393 /compiler/optimizing/nodes.h
parent26ead4975e1752e8ae2f5ed6fda73876c4f9ff59 (diff)
Make LinearizeGraph() public (and move it to nodes files)
Rationale: It is strange that HLinearOrderIterator is defined (and visible) in nodes.h, but clients have no way to build this order. This CL makes the building available at the usual place. Change-Id: Ib66f2edf6dfc8edd6b429bd4bea3ac7e37440b28 Tests: m test-art
Diffstat (limited to 'compiler/optimizing/nodes.h')
-rw-r--r--compiler/optimizing/nodes.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/compiler/optimizing/nodes.h b/compiler/optimizing/nodes.h
index 119b62a16b..4c6d28f0c8 100644
--- a/compiler/optimizing/nodes.h
+++ b/compiler/optimizing/nodes.h
@@ -365,6 +365,13 @@ class HGraph : public ArenaObject<kArenaAllocGraph> {
// is a throw-catch loop, i.e. the header is a catch block.
GraphAnalysisResult AnalyzeLoops() const;
+ // Computes the linear order (should be called before using HLinearOrderIterator).
+ // Linearizes the graph such that:
+ // (1): a block is always after its dominator,
+ // (2): blocks of loops are contiguous.
+ // This creates a natural and efficient ordering when visualizing live ranges.
+ void Linearize();
+
// Iterate over blocks to compute try block membership. Needs reverse post
// order and loop information.
void ComputeTryBlockInformation();