diff options
Diffstat (limited to 'compiler/optimizing/builder.cc')
| -rw-r--r-- | compiler/optimizing/builder.cc | 5 | 
1 files changed, 5 insertions, 0 deletions
diff --git a/compiler/optimizing/builder.cc b/compiler/optimizing/builder.cc index 4dd0d26b89..1af684683b 100644 --- a/compiler/optimizing/builder.cc +++ b/compiler/optimizing/builder.cc @@ -1817,7 +1817,12 @@ void HGraphBuilder::BuildTypeCheck(const Instruction& instruction,      UpdateLocal(destination, current_block_->GetLastInstruction(), dex_pc);    } else {      DCHECK_EQ(instruction.Opcode(), Instruction::CHECK_CAST); +    // We emit a CheckCast followed by a BoundType. CheckCast is a statement +    // which may throw. If it succeeds BoundType sets the new type of `object` +    // for all subsequent uses.      current_block_->AddInstruction(new (arena_) HCheckCast(object, cls, check_kind, dex_pc)); +    current_block_->AddInstruction(new (arena_) HBoundType(object, dex_pc)); +    UpdateLocal(reference, current_block_->GetLastInstruction(), dex_pc);    }  }  |