diff options
author | Kristian Monsen <kristianm@google.com> | 2010-05-21 16:53:46 +0100 |
---|---|---|
committer | Kristian Monsen <kristianm@google.com> | 2010-05-25 10:24:15 +0100 |
commit | 6c2af9490927c3c5959b5cb07461b646f8b32f6c (patch) | |
tree | f7111b9b22befab472616c1d50ec94eb50f1ec8c /WebCore/bindings/js/JSCallbackData.h | |
parent | a149172322a9067c14e8b474a53e63649aa17cad (diff) | |
download | external_webkit-6c2af9490927c3c5959b5cb07461b646f8b32f6c.zip external_webkit-6c2af9490927c3c5959b5cb07461b646f8b32f6c.tar.gz external_webkit-6c2af9490927c3c5959b5cb07461b646f8b32f6c.tar.bz2 |
Merge WebKit at r59636: Initial merge by git
Change-Id: I59b289c4e6b18425f06ce41cc9d34c522515de91
Diffstat (limited to 'WebCore/bindings/js/JSCallbackData.h')
-rw-r--r-- | WebCore/bindings/js/JSCallbackData.h | 32 |
1 files changed, 29 insertions, 3 deletions
diff --git a/WebCore/bindings/js/JSCallbackData.h b/WebCore/bindings/js/JSCallbackData.h index b939c01..f7b8bfe 100644 --- a/WebCore/bindings/js/JSCallbackData.h +++ b/WebCore/bindings/js/JSCallbackData.h @@ -31,14 +31,15 @@ #include "JSDOMBinding.h" #include "JSDOMGlobalObject.h" +#include "ScriptExecutionContext.h" #include <runtime/JSObject.h> #include <runtime/Protect.h> #include <wtf/Threading.h> namespace WebCore { -// We have to clean up this data on the main thread because unprotecting a -// JSObject on a non-main thread without synchronization would corrupt the heap +// We have to clean up this data on the context thread because unprotecting a +// JSObject on the wrong thread without synchronization would corrupt the heap // (and synchronization would be slow). class JSCallbackData { @@ -48,12 +49,15 @@ public: JSCallbackData(JSC::JSObject* callback, JSDOMGlobalObject* globalObject) : m_callback(callback) , m_globalObject(globalObject) +#ifndef NDEBUG + , m_thread(currentThread()) +#endif { } ~JSCallbackData() { - ASSERT(isMainThread()); + ASSERT(m_thread == currentThread()); } JSC::JSObject* callback() { return m_callback.get(); } @@ -64,6 +68,28 @@ public: private: JSC::ProtectedPtr<JSC::JSObject> m_callback; JSC::ProtectedPtr<JSDOMGlobalObject> m_globalObject; +#ifndef NDEBUG + ThreadIdentifier m_thread; +#endif +}; + +class DeleteCallbackDataTask : public ScriptExecutionContext::Task { +public: + static PassOwnPtr<DeleteCallbackDataTask> create(JSCallbackData* data) + { + return new DeleteCallbackDataTask(data); + } + + virtual void performTask(ScriptExecutionContext*) + { + delete m_data; + } + virtual bool isCleanupTask() const { return true; } +private: + + DeleteCallbackDataTask(JSCallbackData* data) : m_data(data) {} + + JSCallbackData* m_data; }; } // namespace WebCore |