Don't restart shared timer if both the current and the new fire time are in the past
https://bugs.webkit.org/show_bug.cgi?id=109731

Reviewed by Andreas Kling.

In 40-50% of cases we reschedule the shared timer both the old and the new fire time have already passed. This can happen at least when rescheduling 
a zero duration timer and when stopping a timer that was ready to fire.

We can skip rescheduling in this case, the shared timer will fire immediately anyway.
        
Scheduling timers calls into platform layer and can be slow. This about halves the time under setSharedTimerFireInterval in PLT3
for ~0.1% total CPU time reduction.

* platform/ThreadTimers.cpp:
(WebCore::ThreadTimers::ThreadTimers):
(WebCore::ThreadTimers::setSharedTimer):
(WebCore::ThreadTimers::updateSharedTimer):
(WebCore::ThreadTimers::sharedTimerFiredInternal):
* platform/ThreadTimers.h:
(ThreadTimers):



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@142811 268f45cc-cd09-0410-ab3c-d52691b4dbfc