diff options
-rwxr-xr-x | compiler/dex/quick/gen_invoke.cc | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/compiler/dex/quick/gen_invoke.cc b/compiler/dex/quick/gen_invoke.cc index 8e7f6a6c58..e70b0c5a48 100755 --- a/compiler/dex/quick/gen_invoke.cc +++ b/compiler/dex/quick/gen_invoke.cc @@ -1166,8 +1166,14 @@ bool Mir2Lir::GenInlinedGet(CallInfo* info) { } if (use_direct_type_ptr) { LoadConstant(reg_class, direct_type_ptr); - } else { + } else if (cu_->dex_file == old_dex) { + // TODO: Bug 16656190 If cu_->dex_file != old_dex the patching could retrieve the wrong class + // since the load class is indexed only by the type_idx. We should include which dex file a + // class is from in the LoadClassType LIR. LoadClassType(type_idx, kArg1); + } else { + cu_->dex_file = old_dex; + return false; } cu_->dex_file = old_dex; |