Temporary fix for bad LIR generation in GenInlinedGet.

In GenInlinedGet we will sometimes try to load a class directly. If
we are doing that and find one, but cannot get the direct pointer
(due to image compilation or including patch information) we might
end up generating incorrect patching code due to the changing of the
cu_->dex_file attribute.

Bug: 16656190
Change-Id: I9bada598bf4fd972d6164163eedd4a496da306d6
diff --git a/compiler/dex/quick/gen_invoke.cc b/compiler/dex/quick/gen_invoke.cc
index 8e7f6a6..e70b0c5 100755
--- a/compiler/dex/quick/gen_invoke.cc
+++ b/compiler/dex/quick/gen_invoke.cc
@@ -1166,8 +1166,14 @@
   }
   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;