summaryrefslogtreecommitdiff
path: root/compiler/optimizing/side_effects_analysis.cc
diff options
context:
space:
mode:
author Aart Bik <ajcbik@google.com> 2015-07-20 17:56:35 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2015-07-20 17:56:36 +0000
commite07300b712f44397ecbfed1ef7f880686e46274a (patch)
tree4b8cd1ecad98b4a797de4ec73205cea52b5360cf /compiler/optimizing/side_effects_analysis.cc
parent16a150b8a4c5c8c9e7159aff3b2ffbd918494abd (diff)
parent854a02b1b488327f80c544ca1119b386b8715c26 (diff)
Merge "Improved side effect analysis (field/array write/read)."
Diffstat (limited to 'compiler/optimizing/side_effects_analysis.cc')
-rw-r--r--compiler/optimizing/side_effects_analysis.cc9
1 files changed, 6 insertions, 3 deletions
diff --git a/compiler/optimizing/side_effects_analysis.cc b/compiler/optimizing/side_effects_analysis.cc
index ea1ca5a731..9dbf638442 100644
--- a/compiler/optimizing/side_effects_analysis.cc
+++ b/compiler/optimizing/side_effects_analysis.cc
@@ -24,14 +24,15 @@ void SideEffectsAnalysis::Run() {
block_effects_.SetSize(graph_->GetBlocks().Size());
loop_effects_.SetSize(graph_->GetBlocks().Size());
+ // In DEBUG mode, ensure side effects are properly initialized to empty.
if (kIsDebugBuild) {
for (HReversePostOrderIterator it(*graph_); !it.Done(); it.Advance()) {
HBasicBlock* block = it.Current();
SideEffects effects = GetBlockEffects(block);
- DCHECK(!effects.HasSideEffects() && !effects.HasDependencies());
+ DCHECK(effects.DoesNothing());
if (block->IsLoopHeader()) {
effects = GetLoopEffects(block);
- DCHECK(!effects.HasSideEffects() && !effects.HasDependencies());
+ DCHECK(effects.DoesNothing());
}
}
}
@@ -46,7 +47,9 @@ void SideEffectsAnalysis::Run() {
inst_it.Advance()) {
HInstruction* instruction = inst_it.Current();
effects = effects.Union(instruction->GetSideEffects());
- if (effects.HasAllSideEffects()) {
+ // If every possible write/read is represented, scanning further
+ // will not add any more information to side-effects of this block.
+ if (effects.DoesAll()) {
break;
}
}