From 6b69e0acb0e4c506ce2587e362c38e36e41e34ab Mon Sep 17 00:00:00 2001 From: Aart Bik Date: Wed, 11 Jan 2017 10:20:43 -0800 Subject: Complete unrolling of loops with small body and trip count one. Rationale: Avoids the unnecessary loop control overhead, suspend check, and exposes more opportunities for constant folding in the resulting loop body. Fully unrolls loop in execute() of the Dhrystone benchmark (3% to 8% improvements). Test: test-art-host Change-Id: If30f38caea9e9f87a929df041dfb7ed1c227aba3 --- compiler/optimizing/nodes.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'compiler/optimizing/nodes.h') diff --git a/compiler/optimizing/nodes.h b/compiler/optimizing/nodes.h index ea9a94c420..bf13702749 100644 --- a/compiler/optimizing/nodes.h +++ b/compiler/optimizing/nodes.h @@ -1097,6 +1097,9 @@ class HBasicBlock : public ArenaObject { // with a control flow instruction). void ReplaceWith(HBasicBlock* other); + // Merges the instructions of `other` at the end of `this`. + void MergeInstructionsWith(HBasicBlock* other); + // Merge `other` at the end of `this`. This method updates loops, reverse post // order, links to predecessors, successors, dominators and deletes the block // from the graph. The two blocks must be successive, i.e. `this` the only -- cgit v1.2.3-59-g8ed1b