SEA IR type handling complete for fibonacci.

types.h: Encapsulated types map into separate class.
code_gen.*, visitor.h: Added visitor function for
         unnamed constants to enable correct
         .dot display and type handling.
type_inference_visitor.cc: Propagated types through
             phi functions, invoke, add-int instructions. Added
             SEA IR type merging functions.

Change-Id: I0fb1c4d40e3af43dc295133a826ce125a787cc33
diff --git a/compiler/sea_ir/debug/dot_gen.h b/compiler/sea_ir/debug/dot_gen.h
index df74901..301c70f 100644
--- a/compiler/sea_ir/debug/dot_gen.h
+++ b/compiler/sea_ir/debug/dot_gen.h
@@ -17,6 +17,7 @@
 #ifndef ART_COMPILER_SEA_IR_DEBUG_DOT_GEN_H_
 #define ART_COMPILER_SEA_IR_DEBUG_DOT_GEN_H_
 
+#include "safe_map.h"
 #include "base/stringprintf.h"
 #include "file_output_stream.h"
 #include "sea_ir/sea.h"
@@ -37,7 +38,7 @@
 class DotGenerationVisitor: public IRVisitor {
  public:
   explicit DotGenerationVisitor(const DotConversionOptions* const options,
-      std::map<int, const Type*>* types): graph_(), types_(types), options_(options) { }
+      art::SafeMap<int, const Type*>* types): graph_(), types_(types), options_(options) { }
 
   virtual void Initialize(SeaGraph* graph);
   // Saves the ssa def->use edges corresponding to @instruction.
@@ -88,7 +89,7 @@
  private:
   std::string dot_text_;
   SeaGraph* graph_;
-  std::map<int, const Type*>* types_;
+  art::SafeMap<int, const Type*>* types_;
   const DotConversionOptions* const options_;
 };
 
@@ -97,7 +98,8 @@
  public:
   DotConversion(): options_() { }
   // Saves to @filename the .dot representation of @graph with the options @options.
-  void DumpSea(SeaGraph* graph, std::string filename,  std::map<int, const Type*>* types) const {
+  void DumpSea(SeaGraph* graph, std::string filename,
+      art::SafeMap<int, const Type*>* types) const {
     LOG(INFO) << "Starting to write SEA string to file.";
     DotGenerationVisitor dgv = DotGenerationVisitor(&options_, types);
     graph->Accept(&dgv);