summaryrefslogtreecommitdiff
path: root/compiler/optimizing/instruction_builder.cc
diff options
context:
space:
mode:
authorNicolas Geoffray <ngeoffray@google.com>2021-01-19 10:35:54 +0000
committerNicolas Geoffray <ngeoffray@google.com>2021-01-21 14:07:57 +0000
commitd5a8695394f8f6e8f9a66752441623dc31b97660 (patch)
tree591ac4892304365282a57262c91e1945ac94c6a9 /compiler/optimizing/instruction_builder.cc
parent2fb37411e42455a00fdad90f0e612c3214e5bd1a (diff)
Reland "Improve invokeinterface for nterp."
This reverts commit f1d06474baa2f7c00761db39099b89ddab71bbe4. Bug: 177554973 Bug: 112676029 Test: test.py Test: 815-invokeinterface-default Test: enable text-to-speech on device, no crash Reason for revert: Fixed issue with recursive default methods Change-Id: I2fb9336adb6c4fc920f39aa19bfe7f0a92ce059a
Diffstat (limited to 'compiler/optimizing/instruction_builder.cc')
-rw-r--r--compiler/optimizing/instruction_builder.cc8
1 files changed, 6 insertions, 2 deletions
diff --git a/compiler/optimizing/instruction_builder.cc b/compiler/optimizing/instruction_builder.cc
index 3b1086e88e..068d3a964b 100644
--- a/compiler/optimizing/instruction_builder.cc
+++ b/compiler/optimizing/instruction_builder.cc
@@ -1111,6 +1111,7 @@ bool HInstructionBuilder::BuildInvoke(const Instruction& instruction,
HInvokeStaticOrDirect::DispatchInfo dispatch_info =
HSharpening::SharpenLoadMethod(resolved_method,
has_method_id,
+ /* for_interface_call= */ false,
code_generator_);
if (dispatch_info.code_ptr_location == CodePtrLocation::kCallCriticalNative) {
graph_->SetHasDirectCriticalNativeCall(true);
@@ -1147,8 +1148,11 @@ bool HInstructionBuilder::BuildInvoke(const Instruction& instruction,
ScopedObjectAccess soa(Thread::Current());
DCHECK(resolved_method->GetDeclaringClass()->IsInterface());
}
- MethodLoadKind load_kind =
- HSharpening::SharpenLoadMethod(resolved_method, /* has_method_id= */ true, code_generator_)
+ MethodLoadKind load_kind = HSharpening::SharpenLoadMethod(
+ resolved_method,
+ /* has_method_id= */ true,
+ /* for_interface_call= */ true,
+ code_generator_)
.method_load_kind;
invoke = new (allocator_) HInvokeInterface(allocator_,
number_of_arguments,