Extract method-related information from CompilationUnit.

Extract method-related information, such as class_loader,
class_linker, dex_file, dex_cache, code_item, method_idx,
and access_flags from art::CompilationUnit, so that we
can use them in 2 different code generators.

Change-Id: I20631cc73b6f01e9646a983156f3fcb066d732db
diff --git a/src/compiler/codegen/MethodCodegenDriver.cc b/src/compiler/codegen/MethodCodegenDriver.cc
index 72b3d6e..ce8cfda 100644
--- a/src/compiler/codegen/MethodCodegenDriver.cc
+++ b/src/compiler/codegen/MethodCodegenDriver.cc
@@ -53,11 +53,15 @@
     // Explicit register usage
     oatLockCallTemps(cUnit);
 
+    OatCompilationUnit mUnit(cUnit->class_loader, cUnit->class_linker,
+                             *cUnit->dex_file, *cUnit->dex_cache, cUnit->code_item,
+                             cUnit->method_idx, cUnit->access_flags);
+
     uint32_t dexMethodIdx = dInsn->vB;
     int vtableIdx;
     bool skipThis;
     bool fastPath =
-        cUnit->compiler->ComputeInvokeInfo(dexMethodIdx, cUnit, type,
+        cUnit->compiler->ComputeInvokeInfo(dexMethodIdx, &mUnit, type,
                                            vtableIdx)
         && !SLOW_INVOKE_PATH;
     if (type == kInterface) {
diff --git a/src/compiler/codegen/arm/ArchFactory.cc b/src/compiler/codegen/arm/ArchFactory.cc
index bdadf6e..c3de5ff 100644
--- a/src/compiler/codegen/arm/ArchFactory.cc
+++ b/src/compiler/codegen/arm/ArchFactory.cc
@@ -22,6 +22,8 @@
  *
  */
 
+#include "oat_compilation_unit.h"
+
 #define SLOW_FIELD_PATH (cUnit->enableDebug & (1 << kDebugSlowFieldPath))
 #define SLOW_INVOKE_PATH (cUnit->enableDebug & (1 << kDebugSlowInvokePath))
 #define SLOW_STRING_PATH (cUnit->enableDebug & (1 << kDebugSlowStringPath))
@@ -303,8 +305,13 @@
     bool isVolatile;
     bool isReferrersClass;
     uint32_t fieldIdx = mir->dalvikInsn.vB;
+
+    OatCompilationUnit mUnit(cUnit->class_loader, cUnit->class_linker,
+                             *cUnit->dex_file, *cUnit->dex_cache, cUnit->code_item,
+                             cUnit->method_idx, cUnit->access_flags);
+
     bool fastPath =
-        cUnit->compiler->ComputeStaticFieldInfo(fieldIdx, cUnit,
+        cUnit->compiler->ComputeStaticFieldInfo(fieldIdx, &mUnit,
                                                 fieldOffset, ssbIndex,
                                                 isReferrersClass, isVolatile, true);
     if (fastPath && !SLOW_FIELD_PATH) {
@@ -397,8 +404,13 @@
     bool isVolatile;
     bool isReferrersClass;
     uint32_t fieldIdx = mir->dalvikInsn.vB;
+
+    OatCompilationUnit mUnit(cUnit->class_loader, cUnit->class_linker,
+                             *cUnit->dex_file, *cUnit->dex_cache, cUnit->code_item,
+                             cUnit->method_idx, cUnit->access_flags);
+
     bool fastPath =
-        cUnit->compiler->ComputeStaticFieldInfo(fieldIdx, cUnit,
+        cUnit->compiler->ComputeStaticFieldInfo(fieldIdx, &mUnit,
                                                 fieldOffset, ssbIndex,
                                                 isReferrersClass, isVolatile, false);
     if (fastPath && !SLOW_FIELD_PATH) {
diff --git a/src/compiler/codegen/arm/Thumb2/Gen.cc b/src/compiler/codegen/arm/Thumb2/Gen.cc
index 5a9750a..e20e19b 100644
--- a/src/compiler/codegen/arm/Thumb2/Gen.cc
+++ b/src/compiler/codegen/arm/Thumb2/Gen.cc
@@ -22,6 +22,8 @@
  *
  */
 
+#include "oat_compilation_unit.h"
+
 namespace art {
 
 /*
@@ -382,8 +384,13 @@
     int fieldOffset;
     bool isVolatile;
     uint32_t fieldIdx = mir->dalvikInsn.vC;
+
+    OatCompilationUnit mUnit(cUnit->class_loader, cUnit->class_linker,
+                             *cUnit->dex_file, *cUnit->dex_cache, cUnit->code_item,
+                             cUnit->method_idx, cUnit->access_flags);
+
     bool fastPath =
-        cUnit->compiler->ComputeInstanceFieldInfo(fieldIdx, cUnit,
+        cUnit->compiler->ComputeInstanceFieldInfo(fieldIdx, &mUnit,
                                                   fieldOffset, isVolatile, false);
     if (fastPath && !SLOW_FIELD_PATH) {
         RegLocation rlResult;
@@ -437,8 +444,13 @@
     int fieldOffset;
     bool isVolatile;
     uint32_t fieldIdx = mir->dalvikInsn.vC;
+
+    OatCompilationUnit mUnit(cUnit->class_loader, cUnit->class_linker,
+                             *cUnit->dex_file, *cUnit->dex_cache, cUnit->code_item,
+                             cUnit->method_idx, cUnit->access_flags);
+
     bool fastPath =
-        cUnit->compiler->ComputeInstanceFieldInfo(fieldIdx, cUnit,
+        cUnit->compiler->ComputeInstanceFieldInfo(fieldIdx, &mUnit,
                                                   fieldOffset, isVolatile, true);
     if (fastPath && !SLOW_FIELD_PATH) {
         RegisterClass regClass = oatRegClassBySize(size);