summaryrefslogtreecommitdiff
path: root/compiler/dex/quick/gen_invoke.cc
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/dex/quick/gen_invoke.cc')
-rwxr-xr-xcompiler/dex/quick/gen_invoke.cc8
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;