Small cleanups in artInvokeInterfaceTrampoline
- No need to do a conflict table lookup when the passed method is
already the interface method.
- Remove obsolete test that the IMT entry is indeed a conflict entry.
- Only call QuickArgumentVisitor::GetCallingMethod when needed.
Test: test.py
Bug: 112676029
Change-Id: I2d5da474ba3e8e4ad559fc7c13a19b04f4c2a515
diff --git a/runtime/class_linker.cc b/runtime/class_linker.cc
index 0bed8eb..8982368 100644
--- a/runtime/class_linker.cc
+++ b/runtime/class_linker.cc
@@ -6854,15 +6854,13 @@
ArtMethod* ClassLinker::AddMethodToConflictTable(ObjPtr<mirror::Class> klass,
ArtMethod* conflict_method,
ArtMethod* interface_method,
- ArtMethod* method,
- bool force_new_conflict_method) {
+ ArtMethod* method) {
ImtConflictTable* current_table = conflict_method->GetImtConflictTable(kRuntimePointerSize);
Runtime* const runtime = Runtime::Current();
LinearAlloc* linear_alloc = GetAllocatorForClassLoader(klass->GetClassLoader());
- bool new_entry = conflict_method == runtime->GetImtConflictMethod() || force_new_conflict_method;
// Create a new entry if the existing one is the shared conflict method.
- ArtMethod* new_conflict_method = new_entry
+ ArtMethod* new_conflict_method = (conflict_method == runtime->GetImtConflictMethod())
? runtime->CreateImtConflictMethod(linear_alloc)
: conflict_method;