summaryrefslogtreecommitdiffstats
path: root/WebCore/bindings/js/JSMessagePortCustom.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/bindings/js/JSMessagePortCustom.cpp')
-rw-r--r--WebCore/bindings/js/JSMessagePortCustom.cpp24
1 files changed, 8 insertions, 16 deletions
diff --git a/WebCore/bindings/js/JSMessagePortCustom.cpp b/WebCore/bindings/js/JSMessagePortCustom.cpp
index f4809ae..c3316c5 100644
--- a/WebCore/bindings/js/JSMessagePortCustom.cpp
+++ b/WebCore/bindings/js/JSMessagePortCustom.cpp
@@ -38,17 +38,17 @@ using namespace JSC;
namespace WebCore {
-void JSMessagePort::mark()
+void JSMessagePort::markChildren(MarkStack& markStack)
{
- DOMObject::mark();
+ Base::markChildren(markStack);
- markIfNotNull(m_impl->onmessage());
- markIfNotNull(m_impl->onclose());
+ markIfNotNull(markStack, m_impl->onmessage());
- if (MessagePortProxy* entangledPort = m_impl->entangledPort()) {
+ // If we have a locally entangled port, we can directly mark it as reachable. Ports that are remotely entangled are marked in-use by markActiveObjectsForContext().
+ if (MessagePort* entangledPort = m_impl->locallyEntangledPort()) {
DOMObject* wrapper = getCachedDOMObjectWrapper(*Heap::heap(this)->globalData(), entangledPort);
- if (wrapper && !wrapper->marked())
- wrapper->mark();
+ if (wrapper)
+ markStack.append(wrapper);
}
typedef MessagePort::EventListenersMap EventListenersMap;
@@ -56,18 +56,10 @@ void JSMessagePort::mark()
EventListenersMap& eventListeners = m_impl->eventListeners();
for (EventListenersMap::iterator mapIter = eventListeners.begin(); mapIter != eventListeners.end(); ++mapIter) {
for (ListenerVector::iterator vecIter = mapIter->second.begin(); vecIter != mapIter->second.end(); ++vecIter)
- (*vecIter)->markJSFunction();
+ (*vecIter)->markJSFunction(markStack);
}
}
-JSValue JSMessagePort::startConversation(ExecState* exec, const ArgList& args)
-{
- JSDOMGlobalObject* globalObject = static_cast<JSDOMGlobalObject*>(exec->lexicalGlobalObject());
- const UString& message = args.at(0).toString(exec);
-
- return toJS(exec, impl()->startConversation(globalObject->scriptExecutionContext(), message).get());
-}
-
JSValue JSMessagePort::addEventListener(ExecState* exec, const ArgList& args)
{
JSDOMGlobalObject* globalObject = toJSDOMGlobalObject(impl()->scriptExecutionContext());