| Index: Source/heap/Handle.h | 
| diff --git a/Source/heap/Handle.h b/Source/heap/Handle.h | 
| index 2df56dd4cdc9545165576a1faff971663c156b2d..efa1c7902102a09634d7dd496c78276c1f63282a 100644 | 
| --- a/Source/heap/Handle.h | 
| +++ b/Source/heap/Handle.h | 
| @@ -215,6 +215,9 @@ private: | 
| friend class ThreadState; | 
| }; | 
|  | 
| +template<typename T> | 
| +class CrossThreadPersistent; | 
| + | 
| // Persistent handles are used to store pointers into the | 
| // managed heap. As long as the Persistent handle is alive | 
| // the GC will keep the object pointed to alive. Persistent | 
| @@ -329,14 +332,20 @@ public: | 
|  | 
| private: | 
| T* m_raw; | 
| + | 
| +    friend class CrossThreadPersistent<T>; | 
| }; | 
|  | 
| // Unlike Persistent, we can destruct a CrossThreadPersistent in a thread | 
| // different from the construction thread. | 
| template<typename T> | 
| class CrossThreadPersistent : public Persistent<T, GlobalPersistents> { | 
| +    WTF_DISALLOW_CONSTRUCTION_FROM_ZERO(CrossThreadPersistent); | 
| +    WTF_DISALLOW_ZERO_ASSIGNMENT(CrossThreadPersistent); | 
| public: | 
| CrossThreadPersistent(T* raw) : Persistent<T, GlobalPersistents>(raw) { } | 
| + | 
| +    using Persistent<T, GlobalPersistents>::operator=; | 
| }; | 
|  | 
| // FIXME: derive affinity based on the collection. | 
|  |