Re: [dev-servo] Removing shared boxes from the DOM

2013-12-06 Thread Niko Matsakis
On Fri, Dec 06, 2013 at 12:51:26PM -0800, Patrick Walton wrote: > Devirtualization isn't necessary if we use unboxed closures. Yes, I was thinking the same thing. Interesting. Niko ___ dev-servo mailing list dev-servo@lists.mozilla.org https://lists.mo

Re: [dev-servo] Removing shared boxes from the DOM

2013-12-06 Thread Boris Zbarsky
On 12/6/13 2:59 PM, Niko Matsakis wrote: This is not necessarily the case -- creating a new kind of GCThing is rather hard, and wrapping in an object is heavyweight compared to allocating a data structure on the stack. Data structures on the stack should be traced with a CustomAutoRooter, in m

Re: [dev-servo] Removing shared boxes from the DOM

2013-12-06 Thread Patrick Walton
Devirtualization isn't necessary if we use unboxed closures. Patrick Niko Matsakis wrote: >On Fri, Dec 06, 2013 at 10:17:40AM -0800, Patrick Walton wrote: >> Wouldn't these data structures be instead traced by the JS GC? ISTM >> if you are putting roots in a data structure it is best to make the

Re: [dev-servo] Removing shared boxes from the DOM

2013-12-06 Thread Niko Matsakis
On Fri, Dec 06, 2013 at 10:17:40AM -0800, Patrick Walton wrote: > Wouldn't these data structures be instead traced by the JS GC? ISTM > if you are putting roots in a data structure it is best to make the > data structure itself traced. This is not necessarily the case -- creating a new kind of GCT

Re: [dev-servo] Removing shared boxes from the DOM

2013-12-06 Thread Niko Matsakis
On Thu, Dec 05, 2013 at 09:27:03AM -0800, Patrick Walton wrote: > This is great stuff, thanks. Have you given thought to how the > rooting API would work? That's one of the last major pieces to making > the Servo DOM type- and memory-safe. Just to summarize what you and I talked about on IRC for t

Re: [dev-servo] Removing shared boxes from the DOM

2013-12-06 Thread Patrick Walton
On 12/6/13 10:12 AM, Niko Matsakis wrote: I am not especially happy with these two changes. They feel hokey and special purpose. I guess the best sol'n depends on the degree of static safety we want. Without something like the `'return` lifetime, I'm not sure how we can guarantee that `Root` valu

Re: [dev-servo] Removing shared boxes from the DOM

2013-12-05 Thread Patrick Walton
Right, it's not done yet. This is a nicer workaround than the workaround we had before, essentially. Patrick Bobby Holley wrote: >To clarify, this stuff doesn't use the new inheritance stuff that's >going >into Rust, right? I assume that stuff isn't done yet? > > >On Thu, Dec 5, 2013 at 9:05 AM

Re: [dev-servo] Removing shared boxes from the DOM

2013-12-05 Thread Bobby Holley
To clarify, this stuff doesn't use the new inheritance stuff that's going into Rust, right? I assume that stuff isn't done yet? On Thu, Dec 5, 2013 at 9:05 AM, Josh Matthews wrote: > For those who just want to see a before/after summary, here's an example. > > BEFORE: we have to handwrite conve

Re: [dev-servo] Removing shared boxes from the DOM

2013-12-05 Thread Patrick Walton
On 12/5/13 9:05 AM, Josh Matthews wrote: In my mind, the biggest improvement here is that we can actually have lists of JSManaged, whereas before we could only store ~[AbstractNode] with the handwave-y guarantee that all of the nodes should also be elements. I also find the new checked casts much

Re: [dev-servo] Removing shared boxes from the DOM

2013-12-05 Thread Josh Matthews
For those who just want to see a before/after summary, here's an example. BEFORE: we have to handwrite conversion routines for each downcast or upcast we want to use. Furthermore, we have the ugly AbstractDocument/AbstractNode/AbstractEvent/AbstractEventTarget types, in addition to all of the

Re: [dev-servo] Removing shared boxes from the DOM

2013-12-03 Thread Josh Matthews
On 12/03/2013 04:53 PM, Patrick Walton wrote: On 12/3/13 12:54 AM, Josh Matthews wrote: I don't entirely understand what this means, either in theory or in practice. So the issue is that the Rust compiler assumes a couple of things around `&mut`: 1. No `&mut` aliases any `&` (because then `&`

Re: [dev-servo] Removing shared boxes from the DOM

2013-12-03 Thread Patrick Walton
On 12/3/13 12:54 AM, Josh Matthews wrote: I don't entirely understand what this means, either in theory or in practice. So the issue is that the Rust compiler assumes a couple of things around `&mut`: 1. No `&mut` aliases any `&` (because then `&` wouldn't be immutable). 2. No `&mut` aliase

Re: [dev-servo] Removing shared boxes from the DOM

2013-12-03 Thread Josh Matthews
On 12/03/2013 03:39 AM, Patrick Walton wrote: On 12/3/13 12:07 AM, Josh Matthews wrote: Ms2ger and I have been working on this on and off, and the Event hierarchy is looking very nice so far: https://github.com/jdm/servo/commits/jsmanaged . It even builds and passes tests, so we should be able t

Re: [dev-servo] Removing shared boxes from the DOM

2013-12-03 Thread Patrick Walton
On 12/3/13 12:07 AM, Josh Matthews wrote: Ms2ger and I have been working on this on and off, and the Event hierarchy is looking very nice so far: https://github.com/jdm/servo/commits/jsmanaged . It even builds and passes tests, so we should be able to continue converting this piece-by-piece. Ther

Re: [dev-servo] Removing shared boxes from the DOM

2013-12-03 Thread Josh Matthews
Ms2ger and I have been working on this on and off, and the Event hierarchy is looking very nice so far: https://github.com/jdm/servo/commits/jsmanaged . It even builds and passes tests, so we should be able to continue converting this piece-by-piece. There is an absolute minimum amount of boile