Bug 19968: Slow Script at www.huffingtonpost.com
authoroliver@apple.com <oliver@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 24 Sep 2008 07:32:23 +0000 (07:32 +0000)
committeroliver@apple.com <oliver@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 24 Sep 2008 07:32:23 +0000 (07:32 +0000)
commit9474649f9c828ab5bcc83cc25f491ca9e27efa43
treef2b537598590407dfbc8257cdc384b28698068f7
parent8d9bd95296255a6e66b1b5f07ef25df25ab653e5
Bug 19968: Slow Script at www.huffingtonpost.com
<https://bugs.webkit.org/show_bug.cgi?id=19968>

Reviewed by Maciej Stachowiak

Finally found the cause of this accursed issue.  It is triggered
by synchronous creation of a new global object from JS.  The new
global object resets the timer state in this execution group's
Machine, taking timerCheckCount to 0.  Then when JS returns the
timerCheckCount is decremented making it non-zero.  The next time
we execute JS we will start the timeout counter, however the non-zero
timeoutCheckCount means we don't reset the timer information. This
means that the timeout check is now checking the cumulative time
since the creation of the global object rather than the time since
JS was last entered.  At this point the slow script dialog is guaranteed
to eventually be displayed incorrectly unless a page is loaded
asynchronously (which will reset everything into a sane state).

The fix for this is rather trivial -- the JSGlobalObject constructor
should not be resetting the machine timer state.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@36843 268f45cc-cd09-0410-ab3c-d52691b4dbfc
JavaScriptCore/ChangeLog
JavaScriptCore/VM/Machine.cpp
JavaScriptCore/VM/Machine.h
JavaScriptCore/kjs/JSGlobalObject.cpp