Title: [129968] trunk/Source/WebCore
Revision
129968
Author
[email protected]
Date
2012-09-28 19:16:19 -0700 (Fri, 28 Sep 2012)

Log Message

Fix compilation of V8DependentRetained and JSDependentRetained.
https://bugs.webkit.org/show_bug.cgi?id=97955

Patch by Elliott Sprehn <[email protected]> on 2012-09-28
Reviewed by Kentaro Hara.

Fix bad usage of putDirect and removeDirect from JSDependentRetained and fix
incorrect assumptions about how weak handles work in V8. This is refactored
out of the patch on http://wkbug.com/93661

No tests needed, this just fixes the compile and wrong usage of ScopedPersistent.

* bindings/js/JSDependentRetained.h:
(WebCore::JSDependentRetained::JSDependentRetained):
(WebCore::JSDependentRetained::retain):
(WebCore::JSDependentRetained::release):
(JSDependentRetained):
* bindings/v8/V8DependentRetained.h:
(WebCore::V8DependentRetained::V8DependentRetained):
(WebCore::V8DependentRetained::retain):
(WebCore::V8DependentRetained::weakCallback):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (129967 => 129968)


--- trunk/Source/WebCore/ChangeLog	2012-09-29 02:00:46 UTC (rev 129967)
+++ trunk/Source/WebCore/ChangeLog	2012-09-29 02:16:19 UTC (rev 129968)
@@ -1,3 +1,26 @@
+2012-09-28  Elliott Sprehn  <[email protected]>
+
+        Fix compilation of V8DependentRetained and JSDependentRetained.
+        https://bugs.webkit.org/show_bug.cgi?id=97955
+
+        Reviewed by Kentaro Hara.
+
+        Fix bad usage of putDirect and removeDirect from JSDependentRetained and fix
+        incorrect assumptions about how weak handles work in V8. This is refactored
+        out of the patch on http://wkbug.com/93661
+
+        No tests needed, this just fixes the compile and wrong usage of ScopedPersistent.
+
+        * bindings/js/JSDependentRetained.h:
+        (WebCore::JSDependentRetained::JSDependentRetained):
+        (WebCore::JSDependentRetained::retain):
+        (WebCore::JSDependentRetained::release):
+        (JSDependentRetained):
+        * bindings/v8/V8DependentRetained.h:
+        (WebCore::V8DependentRetained::V8DependentRetained):
+        (WebCore::V8DependentRetained::retain):
+        (WebCore::V8DependentRetained::weakCallback):
+
 2012-09-28  Ojan Vafai  <[email protected]>
 
         Fix chromium build after http://trac.webkit.org/changeset/129964.

Modified: trunk/Source/WebCore/bindings/js/JSDependentRetained.h (129967 => 129968)


--- trunk/Source/WebCore/bindings/js/JSDependentRetained.h	2012-09-29 02:00:46 UTC (rev 129967)
+++ trunk/Source/WebCore/bindings/js/JSDependentRetained.h	2012-09-29 02:16:19 UTC (rev 129968)
@@ -27,6 +27,7 @@
 #ifndef JSDependentRetained_h
 #define JSDependentRetained_h
 
+#include "JSDOMGlobalObject.h"
 #include <heap/Weak.h>
 #include <runtime/JSObject.h>
 #include <runtime/PrivateName.h>
@@ -36,8 +37,9 @@
 
 class JSDependentRetained {
 public:
-    JSDependentRetained(JSC::JSObject* owner, JSC::JSObject* value)
+    JSDependentRetained(JSC::JSObject* owner, JSC::JSObject* value, JSDOMGlobalObject* globalObject)
         : m_value(value)
+        , m_globalObject(globalObject)
     {
         ASSERT(value);
         if (owner)
@@ -64,7 +66,7 @@
         ASSERT(!m_owner && owner);
         ASSERT(m_value);
         m_owner = JSC::PassWeak<JSC::JSObject>(owner);
-        m_owner->putDirect(m_propertyName, get());
+        m_owner->putDirect(m_globalObject->globalData(), m_propertyName, get());
     }
 
 private:
@@ -72,7 +74,7 @@
     void release()
     {
         if (m_owner)
-            m_owner->removeDirect(m_propertyName);
+            m_owner->removeDirect(m_globalObject->globalData(), m_propertyName);
         m_value.clear();
         m_owner.clear();
     }
@@ -80,6 +82,7 @@
     JSC::Weak<JSC::JSObject> m_owner;
     JSC::Weak<JSC::JSObject> m_value;
     JSC::PrivateName m_propertyName;
+    JSC::Weak<JSDOMGlobalObject> m_globalObject;
 };
 
 } // namespace WebCore

Modified: trunk/Source/WebCore/bindings/v8/V8DependentRetained.h (129967 => 129968)


--- trunk/Source/WebCore/bindings/v8/V8DependentRetained.h	2012-09-29 02:00:46 UTC (rev 129967)
+++ trunk/Source/WebCore/bindings/v8/V8DependentRetained.h	2012-09-29 02:16:19 UTC (rev 129968)
@@ -34,6 +34,7 @@
 #include <wtf/Forward.h>
 #include <wtf/UnusedParam.h>
 #include <wtf/dtoa.h>
+#include <wtf/text/StringBuilder.h>
 
 namespace WebCore {
 
@@ -44,7 +45,7 @@
         , m_propertyName(createPropertyName())
     {
         ASSERT(!m_value.isEmpty());
-        m_value.get().MakeWeak(this, &V8DependentRetained::valueWeakCallback);
+        m_value.get().MakeWeak(this, &V8DependentRetained::weakCallback);
         if (!owner.IsEmpty())
             retain(owner);
     }
@@ -69,8 +70,8 @@
         ASSERT(m_owner.isEmpty() && !owner.IsEmpty());
         ASSERT(!m_value.isEmpty());
         owner->SetHiddenValue(m_propertyName.get(), get());
-        m_owner = owner;
-        m_owner.get().MakeWeak(this, &V8DependentRetained::ownerWeakCallback);
+        m_owner.set(owner);
+        m_owner.get().MakeWeak(this, &V8DependentRetained::weakCallback);
     }
 
 private:
@@ -82,19 +83,12 @@
         return V8HiddenPropertyName::hiddenReferenceName(reinterpret_cast<const char*>(name.characters8()), name.length(), NewString);
     }
 
-    static void ownerWeakCallback(v8::Persistent<v8::Value> object, void* parameter)
+    static void weakCallback(v8::Persistent<v8::Value> object, void* parameter)
     {
         V8DependentRetained* value = static_cast<V8DependentRetained*>(parameter);
         value->release();
     }
 
-    static void valueWeakCallback(v8::Persistent<v8::Value> object, void* parameter)
-    {
-        V8DependentRetained* value = static_cast<V8DependentRetained*>(parameter);
-        // The owner callback should always be called first, since it retains the value.
-        ASSERT_UNUSED(value, value->isEmpty());
-    }
-
     void release()
     {
         if (!m_owner.isEmpty())
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to