| Index: include/v8.h | 
| diff --git a/include/v8.h b/include/v8.h | 
| index a43446639749441a888509ee2f81ac97f5efded0..bece681a48b630fb7aea2f3e20823867761de399 100644 | 
| --- a/include/v8.h | 
| +++ b/include/v8.h | 
| @@ -142,6 +142,28 @@ class Isolate; | 
| class Object; | 
| } | 
|  | 
| +// Generic-purpose unique identifier. | 
| +class UniqueId { | 
| + public: | 
| +  explicit UniqueId(intptr_t data) | 
| +      : data_(data) {} | 
| + | 
| +  bool operator==(const UniqueId& other) const { | 
| +    return data_ == other.data_; | 
| +  } | 
| + | 
| +  bool operator!=(const UniqueId& other) const { | 
| +    return data_ != other.data_; | 
| +  } | 
| + | 
| +  bool operator<(const UniqueId& other) const { | 
| +    return data_ < other.data_; | 
| +  } | 
| + | 
| + private: | 
| +  intptr_t data_; | 
| +}; | 
| + | 
|  | 
| // --- Weak Handles --- | 
|  | 
| @@ -3443,6 +3465,8 @@ class V8EXPORT V8 { | 
| * for partially dependent handles only. | 
| * See v8-profiler.h for RetainedObjectInfo interface description. | 
| */ | 
| +  // TODO(marja): deprecate AddObjectGroup. Use SetObjectGroupID and | 
| +  // SetRetainedObjectInfo instead. | 
| static void AddObjectGroup(Persistent<Value>* objects, | 
| size_t length, | 
| RetainedObjectInfo* info = NULL); | 
| @@ -3451,6 +3475,14 @@ class V8EXPORT V8 { | 
| size_t length, | 
| RetainedObjectInfo* info = NULL); | 
|  | 
| +  static void SetObjectGroupId(Isolate* isolate, | 
| +                               const Persistent<Value>& object, | 
| +                               UniqueId id); | 
| + | 
| +  static void SetRetainedObjectInfo(Isolate* isolate, | 
| +                                    UniqueId id, | 
| +                                    RetainedObjectInfo* info); | 
| + | 
| /** | 
| * Allows the host application to declare implicit references between | 
| * the objects: if |parent| is alive, all |children| are alive too. | 
|  |