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