diff options
author | sgjesse@chromium.org <sgjesse@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-12-16 13:14:36 +0000 |
---|---|---|
committer | sgjesse@chromium.org <sgjesse@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-12-16 13:14:36 +0000 |
commit | e381cb6c17928feb309e27867eba03c5cd8b7483 (patch) | |
tree | bd8abaac357d9ca4049111c64b3181703a725810 /webkit/port/bindings/v8/ScriptController.cpp | |
parent | 400d807b0c567a1df1087694627737174a13c8ad (diff) | |
download | chromium_src-e381cb6c17928feb309e27867eba03c5cd8b7483.zip chromium_src-e381cb6c17928feb309e27867eba03c5cd8b7483.tar.gz chromium_src-e381cb6c17928feb309e27867eba03c5cd8b7483.tar.bz2 |
Unfork MessagePort.cpp by postponing the entanglement of the message port JavaScript wrappers to GC time.
This have the drawback that message ports are "re-entangled/re-unentangled" for each GC which happens. This will most likely not make any noticable difference.
Review URL: http://codereview.chromium.org/14150
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@7053 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/port/bindings/v8/ScriptController.cpp')
-rw-r--r-- | webkit/port/bindings/v8/ScriptController.cpp | 31 |
1 files changed, 0 insertions, 31 deletions
diff --git a/webkit/port/bindings/v8/ScriptController.cpp b/webkit/port/bindings/v8/ScriptController.cpp index 1e4ffe4..99e35aa3 100644 --- a/webkit/port/bindings/v8/ScriptController.cpp +++ b/webkit/port/bindings/v8/ScriptController.cpp @@ -107,37 +107,6 @@ void ScriptController::gcUnprotectJSWrapper(void* dom_object) V8Proxy::GCUnprotect(dom_object); } -void ScriptController::entangleMessagePorts(MessagePort *port1, - MessagePort *port2) -{ - // When two message ports are entangled make sure that the two wrappers are - // also entangled. If one of the ports has pending activity it's wrapper - // will be protected from beeing GC'ed and by entangeling the wrappers the - // wrapper for the entangled port will also be protected. - v8::Handle<v8::Value> port1_wrapper = - V8Proxy::ToV8Object(V8ClassIndex::MESSAGEPORT, port1); - v8::Handle<v8::Value> port2_wrapper = - V8Proxy::ToV8Object(V8ClassIndex::MESSAGEPORT, port2); - ASSERT(port1_wrapper->IsObject()); - v8::Handle<v8::Object>::Cast(port1_wrapper)->SetInternalField( - V8Custom::kMessagePortEntangledPortIndex, port2_wrapper); - ASSERT(port2_wrapper->IsObject()); - v8::Handle<v8::Object>::Cast(port2_wrapper)->SetInternalField( - V8Custom::kMessagePortEntangledPortIndex, port1_wrapper); -} - -void ScriptController::unentangleMessagePort(MessagePort *port) -{ - // Remove the wrapper entanglement when a port is unentangled. - if (V8Proxy::DOMObjectHasJSWrapper(port)) { - v8::Handle<v8::Value> wrapper = - V8Proxy::ToV8Object(V8ClassIndex::MESSAGEPORT, port); - ASSERT(wrapper->IsObject()); - v8::Handle<v8::Object>::Cast(wrapper)->SetInternalField( - V8Custom::kMessagePortEntangledPortIndex, v8::Undefined()); - } -} - ScriptController::ScriptController(Frame* frame) : m_frame(frame) , m_sourceURL(0) |