diff options
Diffstat (limited to 'compiler/optimizing/inliner.cc')
-rw-r--r-- | compiler/optimizing/inliner.cc | 9 |
1 files changed, 1 insertions, 8 deletions
diff --git a/compiler/optimizing/inliner.cc b/compiler/optimizing/inliner.cc index 44af0d6b66..d679261d42 100644 --- a/compiler/optimizing/inliner.cc +++ b/compiler/optimizing/inliner.cc @@ -1342,13 +1342,6 @@ bool HInliner::TryDevirtualize(HInvoke* invoke_instruction, return false; } - // Don't try to devirtualize intrinsics as it breaks pattern matching from later phases. - // TODO(solanes): This `if` could be removed if we update optimizations like - // TryReplaceStringBuilderAppend. - if (invoke_instruction->IsIntrinsic()) { - return false; - } - // Don't devirtualize to an intrinsic invalid after the builder phase. The ArtMethod might be an // intrinsic even when the HInvoke isn't e.g. java.lang.CharSequence.isEmpty (not an intrinsic) // can get devirtualized into java.lang.String.isEmpty (which is an intrinsic). @@ -2452,7 +2445,7 @@ bool HInliner::ReturnTypeMoreSpecific(HInstruction* return_replacement, ReferenceTypeInfo invoke_rti = invoke_instruction->GetReferenceTypeInfo(); if (IsReferenceTypeRefinement(invoke_rti.GetTypeHandle().Get(), invoke_rti.IsExact(), - /*declared_can_be_null=*/ true, + invoke_instruction->CanBeNull(), return_replacement)) { return true; } else if (return_replacement->IsInstanceFieldGet()) { |