Move two members out of MIRGraph::temp_::ssa.

It turns out they are used outside the SSA transformation
by the x86 back-end.

This is a partial revert of
  https://android-review.googlesource.com/120571

Change-Id: Ia5cb2988ab0625d8519901124bd4fc184d5f0886
diff --git a/compiler/dex/mir_dataflow.cc b/compiler/dex/mir_dataflow.cc
index ae29ae7..6704112 100644
--- a/compiler/dex/mir_dataflow.cc
+++ b/compiler/dex/mir_dataflow.cc
@@ -1052,7 +1052,7 @@
 }
 
 int MIRGraph::AddNewSReg(int v_reg) {
-  int subscript = ++temp_.ssa.ssa_last_defs_[v_reg];
+  int subscript = ++ssa_last_defs_[v_reg];
   uint32_t ssa_reg = GetNumSSARegs();
   SetNumSSARegs(ssa_reg + 1);
   ssa_base_vregs_.push_back(v_reg);
@@ -1070,14 +1070,14 @@
 /* Find out the latest SSA register for a given Dalvik register */
 void MIRGraph::HandleSSAUse(int* uses, int dalvik_reg, int reg_index) {
   DCHECK((dalvik_reg >= 0) && (dalvik_reg < static_cast<int>(GetNumOfCodeAndTempVRs())));
-  uses[reg_index] = temp_.ssa.vreg_to_ssa_map_[dalvik_reg];
+  uses[reg_index] = vreg_to_ssa_map_[dalvik_reg];
 }
 
 /* Setup a new SSA register for a given Dalvik register */
 void MIRGraph::HandleSSADef(int* defs, int dalvik_reg, int reg_index) {
   DCHECK((dalvik_reg >= 0) && (dalvik_reg < static_cast<int>(GetNumOfCodeAndTempVRs())));
   int ssa_reg = AddNewSReg(dalvik_reg);
-  temp_.ssa.vreg_to_ssa_map_[dalvik_reg] = ssa_reg;
+  vreg_to_ssa_map_[dalvik_reg] = ssa_reg;
   defs[reg_index] = ssa_reg;
 }
 
@@ -1319,7 +1319,7 @@
       static_cast<int*>(arena_->Alloc(sizeof(int) * GetNumOfCodeAndTempVRs(),
                                       kArenaAllocDFInfo));
 
-  memcpy(bb->data_flow_info->vreg_to_ssa_map_exit, temp_.ssa.vreg_to_ssa_map_,
+  memcpy(bb->data_flow_info->vreg_to_ssa_map_exit, vreg_to_ssa_map_,
          sizeof(int) * GetNumOfCodeAndTempVRs());
   return true;
 }
@@ -1369,15 +1369,17 @@
    * Initialize the DalvikToSSAMap map. There is one entry for each
    * Dalvik register, and the SSA names for those are the same.
    */
-  temp_.ssa.vreg_to_ssa_map_ =
-      reinterpret_cast<int*>(temp_scoped_alloc_->Alloc(sizeof(int) * num_reg, kArenaAllocDFInfo));
+  vreg_to_ssa_map_ =
+      static_cast<int*>(arena_->Alloc(sizeof(int) * num_reg,
+                                      kArenaAllocDFInfo));
   /* Keep track of the higest def for each dalvik reg */
-  temp_.ssa.ssa_last_defs_ =
-      reinterpret_cast<int*>(temp_scoped_alloc_->Alloc(sizeof(int) * num_reg, kArenaAllocDFInfo));
+  ssa_last_defs_ =
+      static_cast<int*>(arena_->Alloc(sizeof(int) * num_reg,
+                                      kArenaAllocDFInfo));
 
   for (unsigned int i = 0; i < num_reg; i++) {
-    temp_.ssa.vreg_to_ssa_map_[i] = i;
-    temp_.ssa.ssa_last_defs_[i] = 0;
+    vreg_to_ssa_map_[i] = i;
+    ssa_last_defs_[i] = 0;
   }
 
   // Create a compiler temporary for Method*. This is done after SSA initialization.
diff --git a/compiler/dex/mir_graph.cc b/compiler/dex/mir_graph.cc
index 8b73863..312a6eb 100644
--- a/compiler/dex/mir_graph.cc
+++ b/compiler/dex/mir_graph.cc
@@ -82,6 +82,8 @@
       cu_(cu),
       ssa_base_vregs_(arena->Adapter(kArenaAllocSSAToDalvikMap)),
       ssa_subscripts_(arena->Adapter(kArenaAllocSSAToDalvikMap)),
+      vreg_to_ssa_map_(NULL),
+      ssa_last_defs_(NULL),
       is_constant_v_(NULL),
       constant_values_(NULL),
       use_counts_(arena->Adapter()),
diff --git a/compiler/dex/mir_graph.h b/compiler/dex/mir_graph.h
index 23bdd87..af97f51 100644
--- a/compiler/dex/mir_graph.h
+++ b/compiler/dex/mir_graph.h
@@ -1317,6 +1317,9 @@
   CompilationUnit* const cu_;
   ArenaVector<int> ssa_base_vregs_;
   ArenaVector<int> ssa_subscripts_;
+  // Map original Dalvik virtual reg i to the current SSA name.
+  int* vreg_to_ssa_map_;            // length == method->registers_size
+  int* ssa_last_defs_;              // length == method->registers_size
   ArenaBitVector* is_constant_v_;   // length == num_ssa_reg
   int* constant_values_;            // length == num_ssa_reg
   // Use counts of ssa names.
@@ -1369,9 +1372,6 @@
       size_t num_vregs;
       ArenaBitVector* work_live_vregs;
       ArenaBitVector** def_block_matrix;  // num_vregs x num_blocks_.
-      // Map original Dalvik virtual reg i to the current SSA name.
-      int* vreg_to_ssa_map_;            // length == method->registers_size
-      int* ssa_last_defs_;              // length == method->registers_size
     } ssa;
     // Global value numbering.
     struct {
diff --git a/compiler/dex/ssa_transformation.cc b/compiler/dex/ssa_transformation.cc
index 2a16592..3905649 100644
--- a/compiler/dex/ssa_transformation.cc
+++ b/compiler/dex/ssa_transformation.cc
@@ -558,24 +558,24 @@
   ScopedArenaAllocator allocator(&cu_->arena_stack);
   int* saved_ssa_map =
       static_cast<int*>(allocator.Alloc(map_size, kArenaAllocDalvikToSSAMap));
-  memcpy(saved_ssa_map, temp_.ssa.vreg_to_ssa_map_, map_size);
+  memcpy(saved_ssa_map, vreg_to_ssa_map_, map_size);
 
   if (block->fall_through != NullBasicBlockId) {
     DoDFSPreOrderSSARename(GetBasicBlock(block->fall_through));
     /* Restore SSA map snapshot */
-    memcpy(temp_.ssa.vreg_to_ssa_map_, saved_ssa_map, map_size);
+    memcpy(vreg_to_ssa_map_, saved_ssa_map, map_size);
   }
   if (block->taken != NullBasicBlockId) {
     DoDFSPreOrderSSARename(GetBasicBlock(block->taken));
     /* Restore SSA map snapshot */
-    memcpy(temp_.ssa.vreg_to_ssa_map_, saved_ssa_map, map_size);
+    memcpy(vreg_to_ssa_map_, saved_ssa_map, map_size);
   }
   if (block->successor_block_list_type != kNotUsed) {
     for (SuccessorBlockInfo* successor_block_info : block->successor_blocks) {
       BasicBlock* succ_bb = GetBasicBlock(successor_block_info->block);
       DoDFSPreOrderSSARename(succ_bb);
       /* Restore SSA map snapshot */
-      memcpy(temp_.ssa.vreg_to_ssa_map_, saved_ssa_map, map_size);
+      memcpy(vreg_to_ssa_map_, saved_ssa_map, map_size);
     }
   }
   return;