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);