Compiler: continuing refactoring

Moving the arena memory allocation mechanism into it's own class as
a prelude to cleaning up the MIR and LIR data structures.

Reworked bit vector as a class using placement new w/ the arena
allocator.

Reworked GrowableList as a class template using the new arena
allocator and renamed to GrowableArray.

Change-Id: I639c4c08abe068094cae2649e04f58c8addd0015
diff --git a/src/compiler/dex/compiler_ir.h b/src/compiler/dex/compiler_ir.h
index d4bf3da..eb1aec1 100644
--- a/src/compiler/dex/compiler_ir.h
+++ b/src/compiler/dex/compiler_ir.h
@@ -26,13 +26,12 @@
 #include "compiler/llvm/intrinsic_helper.h"
 #include "compiler/llvm/ir_builder.h"
 #include "compiler_enums.h"
-#include "compiler_utility.h"
 #include "dex_instruction.h"
 #include "safe_map.h"
+#include "arena_allocator.h"
 
 namespace art {
 
-struct ArenaBitVector;
 class LLVMInfo;
 namespace llvm {
 class LlvmCompilationUnit;
@@ -67,10 +66,6 @@
       num_regs(0),
       num_compiler_temps(0),
       compiler_flip_match(false),
-      arena_head(NULL),
-      current_arena(NULL),
-      num_arena_blocks(0),
-      mstats(NULL),
       mir_graph(NULL),
       cg(NULL) {}
   /*
@@ -109,10 +104,7 @@
   bool compiler_flip_match;
 
   // TODO: move memory management to mir_graph, or just switch to using standard containers.
-  ArenaMemBlock* arena_head;
-  ArenaMemBlock* current_arena;
-  int num_arena_blocks;
-  Memstats* mstats;
+  ArenaAllocator arena;
 
   UniquePtr<MIRGraph> mir_graph;   // MIR container.
   UniquePtr<Backend> cg;           // Target-specific codegen.