- From: Maciej Stachowiak <mjs@apple.com>
- Date: Thu, 28 May 2009 19:47:37 -0700
On May 28, 2009, at 5:17 PM, Ian Hickson wrote: > On Thu, 28 May 2009, Maciej Stachowiak wrote: >> On May 28, 2009, at 1:08 PM, Ian Hickson wrote: >>> On Thu, 28 May 2009, Maciej Stachowiak wrote: >>> >>>> If so, that seems like it could create unbounded memory leaks in >>>> long-running Web applications that use MessagePorts, even if all >>>> references to both endpoints of the MessageChannel are dropped. >>>> That >>>> seems unacceptable to me, unless I misunderstood. >>> >>> The requirement is actually indistinguishable from the UA using the >>> other alternative and just having a really slow garbage collector >>> that >>> only runs at page-closing time. >> >> So it's exactly equivalent to the old requirement, except the spec >> now >> specifically points out that you can just leak forever instead. I >> don't >> think that addresses the original concern at all. > > I've tweaked the text some to make it clear that once the port is not > entangled, it doesn't continue being protected in this way. The new text seems to be this: "When a MessagePort object is entangled, user agents must either act as if the object has a strong reference to its entangledMessagePort object, or as if the MessagePort object's owner has a strong reference to the MessagePort object" It seems to me this allows the following case: two message ports A and B are entangled. A is treated as having a strong reference to B, but is not treated as if its owner has a strong reference to it. However, B is not treated as having a strong reference to A, but is treated as if its owner has a strong reference to it. Is that intended? I think this behavior would be practically implementable and quite useful in many cases, even though it is asymmetric. But I am not sure if the text intended to allow it. Regards, Maciej
Received on Thursday, 28 May 2009 19:47:37 UTC