Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / v8 / src / unique.h
index 373a5be..619c3c9 100644 (file)
@@ -5,8 +5,8 @@
 #ifndef V8_HYDROGEN_UNIQUE_H_
 #define V8_HYDROGEN_UNIQUE_H_
 
-#include "src/handles.h"
-#include "src/objects.h"
+#include "src/handles-inl.h"  // TODO(everyone): Fix our inl.h crap
+#include "src/objects-inl.h"  // TODO(everyone): Fix our inl.h crap
 #include "src/string-stream.h"
 #include "src/utils.h"
 #include "src/zone.h"
@@ -32,6 +32,8 @@ class UniqueSet;
 template <typename T>
 class Unique {
  public:
+  Unique<T>() : raw_address_(NULL) {}
+
   // TODO(titzer): make private and introduce a uniqueness scope.
   explicit Unique(Handle<T> handle) {
     if (handle.is_null()) {
@@ -118,12 +120,8 @@ class Unique {
   friend class UniqueSet<T>;  // Uses internal details for speed.
   template <class U>
   friend class Unique;  // For comparing raw_address values.
-  template <class U>
-  friend class PrintableUnique;  // For automatic up casting.
 
  protected:
-  Unique<T>() : raw_address_(NULL) { }
-
   Address raw_address_;
   Handle<T> handle_;
 
@@ -131,72 +129,8 @@ class Unique {
 };
 
 
-// TODO(danno): At some point if all of the uses of Unique end up using
-// PrintableUnique, then we should merge PrintableUnique into Unique and
-// predicate generating the printable string on a "am I tracing" check.
-template <class T>
-class PrintableUnique : public Unique<T> {
- public:
-  // TODO(titzer): make private and introduce a uniqueness scope.
-  explicit PrintableUnique(Zone* zone, Handle<T> handle) : Unique<T>(handle) {
-    InitializeString(zone);
-  }
-
-  // TODO(titzer): this is a hack to migrate to Unique<T> incrementally.
-  PrintableUnique(Zone* zone, Address raw_address, Handle<T> handle)
-      : Unique<T>(raw_address, handle) {
-    InitializeString(zone);
-  }
-
-  // Constructor for handling automatic up casting.
-  // Eg. PrintableUnique<JSFunction> can be passed when PrintableUnique<Object>
-  // is expected.
-  template <class S>
-  PrintableUnique(PrintableUnique<S> uniq)  // NOLINT
-      : Unique<T>(Handle<T>()) {
-#ifdef DEBUG
-    T* a = NULL;
-    S* b = NULL;
-    a = b;  // Fake assignment to enforce type checks.
-    USE(a);
-#endif
-    this->raw_address_ = uniq.raw_address_;
-    this->handle_ = uniq.handle_;
-    string_ = uniq.string();
-  }
-
-  // TODO(titzer): this is a hack to migrate to Unique<T> incrementally.
-  static PrintableUnique<T> CreateUninitialized(Zone* zone, Handle<T> handle) {
-    return PrintableUnique<T>(zone, reinterpret_cast<Address>(NULL), handle);
-  }
-
-  static PrintableUnique<T> CreateImmovable(Zone* zone, Handle<T> handle) {
-    return PrintableUnique<T>(zone, reinterpret_cast<Address>(*handle), handle);
-  }
-
-  const char* string() { return string_; }
-
- private:
-  const char* string_;
-
-  void InitializeString(Zone* zone) {
-    // The stringified version of the parameter must be calculated when the
-    // Operator is constructed to avoid accessing the heap.
-    HeapStringAllocator temp_allocator;
-    StringStream stream(&temp_allocator);
-    this->handle_->ShortPrint(&stream);
-    SmartArrayPointer<const char> desc_string = stream.ToCString();
-    const char* desc_chars = desc_string.get();
-    int length = static_cast<int>(strlen(desc_chars));
-    char* desc_copy = zone->NewArray<char>(length + 1);
-    memcpy(desc_copy, desc_chars, length + 1);
-    string_ = desc_copy;
-  }
-};
-
-
 template <typename T>
-class UniqueSet V8_FINAL : public ZoneObject {
+class UniqueSet FINAL : public ZoneObject {
  public:
   // Constructor. A new set will be empty.
   UniqueSet() : size_(0), capacity_(0), array_(NULL) { }