diff options
author | Nicolas Geoffray <ngeoffray@google.com> | 2015-03-11 15:11:19 +0000 |
---|---|---|
committer | Nicolas Geoffray <ngeoffray@google.com> | 2015-03-12 17:55:01 +0000 |
commit | 915b9d0c13bb5091875d868fbfa551d7b65d7477 (patch) | |
tree | 63822d7081b0da33ccda2019dd52025f0ecedb35 /compiler/optimizing/ssa_liveness_analysis.cc | |
parent | bf5565a75876a84c8c2401df597d922a7870a8f2 (diff) | |
download | art-915b9d0c13bb5091875d868fbfa551d7b65d7477.zip art-915b9d0c13bb5091875d868fbfa551d7b65d7477.tar.gz art-915b9d0c13bb5091875d868fbfa551d7b65d7477.tar.bz2 |
Tweak liveness when instructions are used in environments.
Instructions remain live when debuggable, but only instructions
with object types remain live when non-debuggable.
Enable StackVisitor::GetThisObject for optimizing.
Change-Id: Id87b2cbf33a02450059acc9993995782e5f28987
Diffstat (limited to 'compiler/optimizing/ssa_liveness_analysis.cc')
-rw-r--r-- | compiler/optimizing/ssa_liveness_analysis.cc | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/compiler/optimizing/ssa_liveness_analysis.cc b/compiler/optimizing/ssa_liveness_analysis.cc index d009390..c0d6f42 100644 --- a/compiler/optimizing/ssa_liveness_analysis.cc +++ b/compiler/optimizing/ssa_liveness_analysis.cc @@ -230,11 +230,12 @@ void SsaLivenessAnalysis::ComputeLiveRanges() { } if (current->HasEnvironment()) { - // All instructions in the environment must be live. + // Handle environment uses. See statements (b) and (c) of the + // SsaLivenessAnalysis. HEnvironment* environment = current->GetEnvironment(); for (size_t i = 0, e = environment->Size(); i < e; ++i) { HInstruction* instruction = environment->GetInstructionAt(i); - if (instruction != nullptr) { + if (ShouldBeLiveForEnvironment(instruction)) { DCHECK(instruction->HasSsaIndex()); live_in->SetBit(instruction->GetSsaIndex()); instruction->GetLiveInterval()->AddUse(current, i, true); |