On Sat, Jan 28, 2017 at 3:26 PM, Brian Hackett <bhackett1...@gmail.com>
wrote:

> The hard parts mainly revolve around the GC.  We can only have one GC
> going on at once, and we need to make sure that we are both able to
> maintain a coherent, race free GC state and that we can deal with
> tricky situations like canceling/finishing an incremental GC in one
> zone group (that might not be owned by the current thread) in order to
> perform an urgent GC on another zone group.
>

Will there really be no way to have multiple GCs happening at the same
time? And does that include minor GCs?

If so, that seems problematic to me for three reasons:

- DOM Workers can now cause websites to jank through heavy allocations.
Because that's not the case in any browser right now, moving operations to
workers is a way to reduce jank that authors are using, so it seems likely
to cause user-visible regressions.

- My understanding is that Quantum DOM (in the preemptively-scheduling
end-state) aims to get us many of the performance and responsiveness
benefits of using many content processes without the memory overhead.
Having one window's allocations interfere with the responsiveness of others
would leave us in a worse position compared to process separation.

- Servo is using a setup that includes many runtimes (roughly one per zone
group, other terminology notwithstanding) to achieve goals similar to
Quantum DOM. I can't find it right now, but I think we even have a demo
showing smooth animation in one frame while another frame is suffering from
GC jank.

None of these are problems as long as GC doesn't actually jank script
execution. At least if minor GCs are also included, it seems quite likely
that it will: as you alluded to, a long-ish incremental GC would need to be
finished non-incrementally if we run out of nursery space at any point
during its execution.


Till
_______________________________________________
dev-tech-js-engine-internals mailing list
dev-tech-js-engine-internals@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-tech-js-engine-internals

Reply via email to