| 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.
|
|
|