String intern table and support for unordered_map

Change-Id: I22d86d060780552675c5d7f14a98ffde480eac82
diff --git a/src/intern_table.h b/src/intern_table.h
new file mode 100644
index 0000000..61da28b
--- /dev/null
+++ b/src/intern_table.h
@@ -0,0 +1,27 @@
+// Copyright 2011 Google Inc. All Rights Reserved.
+
+#ifndef ART_SRC_INTERN_TABLE_H_
+#define ART_SRC_INTERN_TABLE_H_
+
+#include "unordered_map.h"
+
+#include "heap.h"
+#include "object.h"
+
+namespace art {
+
+class InternTable {
+ public:
+  InternTable();
+  String* Intern(int32_t utf16_length, const char* utf8_data);
+  void VisitRoots(Heap::RootVistor* root_visitor, void* arg);
+
+ private:
+  typedef std::tr1::unordered_multimap<int32_t, String*> Table;
+  Table intern_table_;
+  Mutex* intern_table_lock_;
+};
+
+}  // namespace art
+
+#endif  // ART_SRC_CLASS_LINKER_H_