diff options
Diffstat (limited to 'compiler/optimizing/builder.cc')
-rw-r--r-- | compiler/optimizing/builder.cc | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/compiler/optimizing/builder.cc b/compiler/optimizing/builder.cc index bb2080766d..2f8a605ab4 100644 --- a/compiler/optimizing/builder.cc +++ b/compiler/optimizing/builder.cc @@ -666,9 +666,10 @@ bool HGraphBuilder::BuildInvoke(const Instruction& instruction, &storage_index); } - if (is_referrer_class) { - // If the declaring class is the referrer class, no class - // initialization is needed before the static method call. + if (referrer_class.Get()->IsSubClass(resolved_method->GetDeclaringClass())) { + // If the referrer class is the declaring class or a subclass + // of the declaring class, no class initialization is needed + // before the static method call. clinit_check_requirement = HInvokeStaticOrDirect::ClinitCheckRequirement::kNone; } else if (storage_index != DexFile::kDexNoIndex) { // If the method's class type index is available, check |