summaryrefslogtreecommitdiffstats
path: root/compiler
diff options
context:
space:
mode:
authorCalin Juravle <calin@google.com>2015-10-16 16:28:46 +0100
committerCalin Juravle <calin@google.com>2015-10-16 17:51:02 +0100
commit54d8f4bc810e7e0767f44cb77e5706a232b644bb (patch)
treec6894555e7590bad0ae4bee565e64b8907651f4f /compiler
parentddb2a98fc557753a8080f23bea79bec3b89fee2c (diff)
downloadart-54d8f4bc810e7e0767f44cb77e5706a232b644bb.zip
art-54d8f4bc810e7e0767f44cb77e5706a232b644bb.tar.gz
art-54d8f4bc810e7e0767f44cb77e5706a232b644bb.tar.bz2
Fix in reference type propagation
We miss updating the type of objects if their nullability gets updated first. Bug: 25008765 (cherry picked from commit 83853392e26b2aa48328bb90c9f9c57b32c280dc) Change-Id: I81aa759d96008251d74f941494abe74aa4b52bdc
Diffstat (limited to 'compiler')
-rw-r--r--compiler/optimizing/reference_type_propagation.cc4
1 files changed, 3 insertions, 1 deletions
diff --git a/compiler/optimizing/reference_type_propagation.cc b/compiler/optimizing/reference_type_propagation.cc
index 40ec46c..f8e4d10 100644
--- a/compiler/optimizing/reference_type_propagation.cc
+++ b/compiler/optimizing/reference_type_propagation.cc
@@ -316,7 +316,9 @@ bool ReferenceTypePropagation::UpdateNullability(HInstruction* instr) {
void ReferenceTypePropagation::ProcessWorklist() {
while (!worklist_.IsEmpty()) {
HInstruction* instruction = worklist_.Pop();
- if (UpdateNullability(instruction) || UpdateReferenceTypeInfo(instruction)) {
+ bool updated_nullability = UpdateNullability(instruction);
+ bool updated_reference_type = UpdateReferenceTypeInfo(instruction);
+ if (updated_nullability || updated_reference_type) {
AddDependentInstructionsToWorklist(instruction);
}
}