summaryrefslogtreecommitdiff
path: root/compiler/optimizing/instruction_builder.cc
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/optimizing/instruction_builder.cc')
-rw-r--r--compiler/optimizing/instruction_builder.cc4
1 files changed, 3 insertions, 1 deletions
diff --git a/compiler/optimizing/instruction_builder.cc b/compiler/optimizing/instruction_builder.cc
index ab28e4b86f..e9d1ee2e0b 100644
--- a/compiler/optimizing/instruction_builder.cc
+++ b/compiler/optimizing/instruction_builder.cc
@@ -964,7 +964,9 @@ static ArtMethod* ResolveMethod(uint16_t method_idx,
// could resolve the callee to the wrong method.
return nullptr;
}
- resolved_method = actual_method;
+ // Call GetCanonicalMethod in case the resolved method is a copy: for super calls, the encoding
+ // of ArtMethod in BSS relies on not having copies there.
+ resolved_method = actual_method->GetCanonicalMethod(class_linker->GetImagePointerSize());
}
if (*invoke_type == kInterface) {