diff options
author | Aart Bik <ajcbik@google.com> | 2015-10-19 11:05:03 -0700 |
---|---|---|
committer | Aart Bik <ajcbik@google.com> | 2015-10-19 11:12:11 -0700 |
commit | bb245d199a5240b4c520263fd2c8c10dba79eadc (patch) | |
tree | e16b37485e3e0e34c24e35a71cc8e6986d1e2e70 /compiler/optimizing/code_generator_arm.cc | |
parent | d5a69fc429f57bf528aa061618d3ae94ee8deb24 (diff) |
Generalize codegen and simplification of deopt.
Rationale: the de-opt instruction is very similar to an if,
so the existing assumption that it always has a
conditional "under the hood" is very unsafe, since
optimizations may have replaced conditionals with
actual values; this CL generalizes handling of deopt.
Change-Id: I1c6cb71fdad2af869fa4714b38417dceed676459
Diffstat (limited to 'compiler/optimizing/code_generator_arm.cc')
-rw-r--r-- | compiler/optimizing/code_generator_arm.cc | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/compiler/optimizing/code_generator_arm.cc b/compiler/optimizing/code_generator_arm.cc index 1df6818549..358a35c483 100644 --- a/compiler/optimizing/code_generator_arm.cc +++ b/compiler/optimizing/code_generator_arm.cc @@ -1377,8 +1377,7 @@ void LocationsBuilderARM::VisitDeoptimize(HDeoptimize* deoptimize) { LocationSummary* locations = new (GetGraph()->GetArena()) LocationSummary(deoptimize, LocationSummary::kCallOnSlowPath); HInstruction* cond = deoptimize->InputAt(0); - DCHECK(cond->IsCondition()); - if (cond->AsCondition()->NeedsMaterialization()) { + if (!cond->IsCondition() || cond->AsCondition()->NeedsMaterialization()) { locations->SetInAt(0, Location::RequiresRegister()); } } |