diff options
author | levin@chromium.org <levin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-06-22 00:11:31 +0000 |
---|---|---|
committer | levin@chromium.org <levin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-06-22 00:11:31 +0000 |
commit | 1653f88fbb35f91b8492e88c7a24ccc88f332148 (patch) | |
tree | b3bf874fa42803a76a4a407cd51640ca263d4e20 /webkit/port | |
parent | 8390e3da34c4e21348c58cbb9d1269c3beec1cf3 (diff) | |
download | chromium_src-1653f88fbb35f91b8492e88c7a24ccc88f332148.zip chromium_src-1653f88fbb35f91b8492e88c7a24ccc88f332148.tar.gz chromium_src-1653f88fbb35f91b8492e88c7a24ccc88f332148.tar.bz2 |
Update WebKit r44872:44922
Compensate for atwilson@'s change to MessagePorts and add new added layout tests which failure.
The deleted *expected files were due to a conversion of a test to dump as text.
atwilson's code review was done in http://codereview.chromium.org/131047
BUG=None
TEST=None
TBR=paulg
Review URL: http://codereview.chromium.org/140052
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@18898 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/port')
-rw-r--r-- | webkit/port/bindings/v8/v8_proxy.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/webkit/port/bindings/v8/v8_proxy.cpp b/webkit/port/bindings/v8/v8_proxy.cpp index 46bff01..1f2a669 100644 --- a/webkit/port/bindings/v8/v8_proxy.cpp +++ b/webkit/port/bindings/v8/v8_proxy.cpp @@ -361,11 +361,18 @@ ACTIVE_DOM_OBJECT_TYPES(MAKE_CASE) // ports are actually entangled in MessagePort::entangle, but to avoid // forking MessagePort.* this is postponed to GC time. Having this postponed // has the drawback that the wrappers are "entangled/unentangled" for each - // GC even though their entnaglement most likely is still the same. + // GC even though their entanglement most likely is still the same. if (type == V8ClassIndex::MESSAGEPORT) { // Get the port and its entangled port. MessagePort* port1 = static_cast<MessagePort*>(obj); - MessagePortProxy* port2 = port1->entangledPort(); + MessagePort* port2 = port1->locallyEntangledPort(); + + // If we are remotely entangled, then mark this object as reachable + // (we can't determine reachability directly as the remote object is + // out-of-proc). + if (port1->isEntangled() && !port2) + wrapper.ClearWeak(); + if (port2 != NULL) { // As ports are always entangled in pairs only perform the entanglement // once for each pair (see ASSERT in MessagePort::unentangle()). |