We need to do this. I can no longer reason about this code because it's so bad.
Created attachment 202927 [details] work in progress
Created attachment 202945 [details] the patch
Comment on attachment 202945 [details] the patch r=me
Landed in http://trac.webkit.org/changeset/150765