]> git.saurik.com Git - apple/javascriptcore.git/blobdiff - heap/Strong.h
JavaScriptCore-7600.1.4.15.12.tar.gz
[apple/javascriptcore.git] / heap / Strong.h
index 7fafaeab56008338663aae74585cd237cc1ebec3..27ab5d31f997b208846da9644351d2bd32e038cc 100644 (file)
 
 namespace JSC {
 
-class JSGlobalData;
+class VM;
 
 // A strongly referenced handle that prevents the object it points to from being garbage collected.
 template <typename T> class Strong : public Handle<T> {
     using Handle<T>::slot;
     using Handle<T>::setSlot;
+    template <typename U> friend class Strong;
 
 public:
     typedef typename Handle<T>::ExternalType ExternalType;
@@ -47,9 +48,9 @@ public:
     {
     }
     
-    Strong(JSGlobalData&, ExternalType = ExternalType());
+    Strong(VM&, ExternalType = ExternalType());
 
-    Strong(JSGlobalData&, Handle<T>);
+    Strong(VM&, Handle<T>);
     
     Strong(const Strong& other)
         : Handle<T>()
@@ -94,7 +95,7 @@ public:
 
     ExternalType get() const { return HandleTypes<T>::getFromSlot(this->slot()); }
 
-    void set(JSGlobalData&, ExternalType);
+    void set(VM&, ExternalType);
 
     template <typename U> Strong& operator=(const Strong<U>& other)
     {
@@ -103,7 +104,7 @@ public:
             return *this;
         }
 
-        set(*HandleSet::heapFor(other.slot())->globalData(), other.get());
+        set(*HandleSet::heapFor(other.slot())->vm(), other.get());
         return *this;
     }
     
@@ -114,7 +115,7 @@ public:
             return *this;
         }
 
-        set(*HandleSet::heapFor(other.slot())->globalData(), other.get());
+        set(*HandleSet::heapFor(other.slot())->vm(), other.get());
         return *this;
     }
 
@@ -147,11 +148,11 @@ template<class T> inline void swap(Strong<T>& a, Strong<T>& b)
 
 namespace WTF {
 
-template<typename T> struct VectorTraits<JSC::Strong<T> > : SimpleClassVectorTraits {
+template<typename T> struct VectorTraits<JSC::Strong<T>> : SimpleClassVectorTraits {
     static const bool canCompareWithMemcmp = false;
 };
 
-template<typename P> struct HashTraits<JSC::Strong<P> > : SimpleClassHashTraits<JSC::Strong<P> > { };
+template<typename P> struct HashTraits<JSC::Strong<P>> : SimpleClassHashTraits<JSC::Strong<P>> { };
 
 }