This patch fixes two issues at play in 142466 and 156250. We currently use the Object.debounce/Object.soon proxy to try to coalesce calls to DOMTreeUpdater._attributesModified. Unfortunately, this doesn't coalesce very many calls because .soon is equivalent to using setTimeout(0). So we end up setting and clearing a timer for every attribute modification, and only coalesce calls until the timer fires. This means we also update the DOMTreeOutline multiple times per frame because this work is not done on a requestAnimationFrame, and the timer could fire many times in a frame's time slice.
<rdar://problem/25561452>
Created attachment 280736 [details] Proposed Fix
Committed r201778: <http://trac.webkit.org/changeset/201778>