diff options
Diffstat (limited to 'compiler/optimizing/inliner.cc')
-rw-r--r-- | compiler/optimizing/inliner.cc | 14 |
1 files changed, 1 insertions, 13 deletions
diff --git a/compiler/optimizing/inliner.cc b/compiler/optimizing/inliner.cc index 7a8ac2b3ec..e2aca3091f 100644 --- a/compiler/optimizing/inliner.cc +++ b/compiler/optimizing/inliner.cc @@ -512,9 +512,6 @@ bool HInliner::TryBuildAndInline(ArtMethod* resolved_method, if ((return_replacement != nullptr) && (return_replacement->GetType() == Primitive::kPrimNot)) { - // TODO(calin): If valid, return_replacement could still be object (as a result of a merge). - // This happens because we don't implement the smallest common type and merge to Object. - // In this case, we should bound its type to the type of the invoke. if (!return_replacement->GetReferenceTypeInfo().IsValid()) { // Make sure that we have a valid type for the return. We may get an invalid one when // we inline invokes with multiple branches and create a Phi for the result. @@ -523,19 +520,10 @@ bool HInliner::TryBuildAndInline(ArtMethod* resolved_method, DCHECK(return_replacement->IsPhi()); size_t pointer_size = Runtime::Current()->GetClassLinker()->GetImagePointerSize(); ReferenceTypeInfo::TypeHandle return_handle = - handles_->NewHandle(resolved_method->GetReturnType(true /* resolve */, pointer_size)); + handles_->NewHandle(resolved_method->GetReturnType(true /* resolve */, pointer_size)); return_replacement->SetReferenceTypeInfo(ReferenceTypeInfo::Create( return_handle, return_handle->CannotBeAssignedFromOtherTypes() /* is_exact */)); } - - // Check if the actual return type is a subtype of the declared invoke type. - // If so, run a limited type propagation to update the types in the original graph. - ReferenceTypeInfo return_rti = return_replacement->GetReferenceTypeInfo(); - ReferenceTypeInfo invoke_rti = invoke_instruction->GetReferenceTypeInfo(); - if (!return_rti.IsEqual(invoke_rti) && invoke_rti.IsSupertypeOf(return_rti)) { - ReferenceTypePropagation rtp_fixup(graph_, handles_); - rtp_fixup.Run(return_replacement); - } } return true; |