<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>109630</bug_id>
          
          <creation_ts>2013-02-12 16:40:33 -0800</creation_ts>
          <short_desc>Avoid updating timer heap when nothing changes</short_desc>
          <delta_ts>2013-02-13 12:42:12 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>kling</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>831409</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-02-12 16:40:33 -0800</bug_when>
    <thetext>When the fire time of a Timer is changed we remove it from the timer heap and reinsert it. This is pretty slow. Turns out that in over 80% of cases the insertion position is the same as the original position. We can check if anything is actually going to change before doing this work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831430</commentid>
    <comment_count>1</comment_count>
      <attachid>187963</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-02-12 16:57:29 -0800</bug_when>
    <thetext>Created attachment 187963
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831433</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-12 16:59:40 -0800</bug_when>
    <thetext>Attachment 187963 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/platform/Timer.cpp&apos;, u&apos;Source/WebCore/platform/Timer.h&apos;]&quot; exit_code: 1
Source/WebCore/platform/Timer.cpp:354:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Source/WebCore/platform/Timer.cpp:356:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 2 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831927</commentid>
    <comment_count>3</comment_count>
      <attachid>188085</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-02-13 08:21:32 -0800</bug_when>
    <thetext>Created attachment 188085
patch2

With stronger validity assertions, some cleanups.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832109</commentid>
    <comment_count>4</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-02-13 11:32:48 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/142764</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832193</commentid>
    <comment_count>5</comment_count>
      <attachid>188085</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-02-13 12:31:39 -0800</bug_when>
    <thetext>Comment on attachment 188085
patch2

View in context: https://bugs.webkit.org/attachment.cgi?id=188085&amp;action=review

&gt; Source/WebCore/platform/Timer.h:87
&gt; -    const Vector&lt;TimerBase*&gt;&amp; timerHeap() const { ASSERT(m_cachedThreadGlobalTimerHeap); return *m_cachedThreadGlobalTimerHeap; }
&gt; -    Vector&lt;TimerBase*&gt;&amp; timerHeap() { ASSERT(m_cachedThreadGlobalTimerHeap); return *m_cachedThreadGlobalTimerHeap; }
&gt; +    Vector&lt;TimerBase*&gt;&amp; timerHeap() const { ASSERT(m_cachedThreadGlobalTimerHeap); return *m_cachedThreadGlobalTimerHeap; }

Why this change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832216</commentid>
    <comment_count>6</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-02-13 12:42:12 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Why this change?

Alexey pointed out in Bug 109597 that it didn&apos;t make too much sense to have both as the vector items are mutable anyway.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187963</attachid>
            <date>2013-02-12 16:57:29 -0800</date>
            <delta_ts>2013-02-13 08:21:32 -0800</delta_ts>
            <desc>patch</desc>
            <filename>timer-heap-check.patch</filename>
            <type>text/plain</type>
            <size>5368</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MjY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDEzLTAyLTEyICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBBdm9pZCB1cGRhdGluZyB0aW1l
ciBoZWFwIHdoZW4gbm90aGluZyBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk2MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXaGVuIHRoZSBmaXJlIHRpbWUgb2YgYSBUaW1lciBpcyBjaGFu
Z2VkIHdlIHJlbW92ZSBpdCBmcm9tIHRoZSB0aW1lciBoZWFwIGFuZCByZWluc2VydCBpdC4gVGhp
cyBpcyBwcmV0dHkgc2xvdy4gCisgICAgICAgIFR1cm5zIG91dCB0aGF0IGluIH44MCUgb2YgY2Fz
ZXMgd2UgYXJlIGFscmVhZHkgaW4gdGhlIGhlYXAgYW5kIHRoZSBpbnNlcnRpb24gcG9zaXRpb24g
aXMgdGhlIHNhbWUgYXMgdGhlIAorICAgICAgICBvcmlnaW5hbCBwb3NpdGlvbi4gV2UgY2FuIGNo
ZWNrIGlmIGFueXRoaW5nIGlzIGFjdHVhbGx5IGdvaW5nIHRvIGNoYW5nZSBiZWZvcmUgZG9pbmcg
dGhpcyB3b3JrLgorICAgICAgICAKKyAgICAgICAgVGhpcyBtYWtlcyBzdGFydGluZyBhIHRpbWVy
IH4zMCUgZmFzdGVyIGluIGF2ZXJhZ2UsIH4wLjElIHByb2dyZXNzaW9uIGluIFBMVDMuCisgICAg
ICAgIAorICAgICAgICAqIHBsYXRmb3JtL1RpbWVyLmNwcDoKKyAgICAgICAgKFRpbWVySGVhcExl
c3NUaGFuRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6VGltZXJIZWFwTGVzc1RoYW5GdW5j
dGlvbjo6b3BlcmF0b3IoKSk6CisgICAgICAgIChXZWJDb3JlOjpwYXJlbnRIZWFwUHJvcGVydHlI
b2xkcyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmNoaWxkSGVhcFBy
b3BlcnR5SG9sZHMpOgorICAgICAgICAoV2ViQ29yZTo6VGltZXJCYXNlOjpoYXNWYWxpZEhlYXBQ
b3NpdGlvbik6CisgICAgICAgIAorICAgICAgICAgICAgVGhlIGNvZGUgaGVhciBhc3N1bWVzIHRo
YXQgU1RMIGhlYXAgaXMgYSBub3JtYWwgYmluYXJ5IGhlYXAuIElmIHRoZXJlIGlzIGEgZGlmZmVy
ZW50IGltcGxlbWVudGF0aW9uCisgICAgICAgICAgICBzb21ld2hlcmUgdGhlIGFzc2VydGlvbnMg
d2lsbCBjYXRjaCBpdC4KKworICAgICAgICAoV2ViQ29yZTo6VGltZXJCYXNlOjp1cGRhdGVIZWFw
SWZOZWVkZWQpOgorICAgICAgICAKKyAgICAgICAgICAgIFNraXAgdXBkYXRpbmcgdGhlIGhlYXAg
aWYgaXQgaXMgYWxyZWFkeSB2YWxpZC4KKworICAgICAgICAoV2ViQ29yZTo6VGltZXJCYXNlOjpz
ZXROZXh0RmlyZVRpbWUpOgorICAgICAgICAqIHBsYXRmb3JtL1RpbWVyLmg6CisgICAgICAgIChU
aW1lckJhc2UpOgorCiAyMDEzLTAyLTEyICBSYXltb25kIFRveSAgPHJ0b3lAZ29vZ2xlLmNvbT4K
IAogICAgICAgICBTeW5jaHJvbml6ZSBzZXR0aW5nIG9mIHBhbm5lciBub2RlIG1vZGVsIGFuZCBw
cm9jZXNzaW5nCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuY3BwCShyZXZpc2lvbiAxNDI2
NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE2NywxMCArMTY3LDEwIEBAIGlubGluZSBwdHJkaWZmX3Qgb3BlcmF0b3ItKFRpbWVySGVh
cEl0ZXIKIAogY2xhc3MgVGltZXJIZWFwTGVzc1RoYW5GdW5jdGlvbiB7CiBwdWJsaWM6Ci0gICAg
Ym9vbCBvcGVyYXRvcigpKFRpbWVyQmFzZSosIFRpbWVyQmFzZSopIGNvbnN0OworICAgIGJvb2wg
b3BlcmF0b3IoKShjb25zdCBUaW1lckJhc2UqLCBjb25zdCBUaW1lckJhc2UqKSBjb25zdDsKIH07
CiAKLWlubGluZSBib29sIFRpbWVySGVhcExlc3NUaGFuRnVuY3Rpb246Om9wZXJhdG9yKCkoVGlt
ZXJCYXNlKiBhLCBUaW1lckJhc2UqIGIpIGNvbnN0CitpbmxpbmUgYm9vbCBUaW1lckhlYXBMZXNz
VGhhbkZ1bmN0aW9uOjpvcGVyYXRvcigpKGNvbnN0IFRpbWVyQmFzZSogYSwgY29uc3QgVGltZXJC
YXNlKiBiKSBjb25zdAogewogICAgIC8vIFRoZSBjb21wYXJpc29ucyBiZWxvdyBhcmUgImJhY2t3
YXJkcyIgYmVjYXVzZSB0aGUgaGVhcCBwdXRzIHRoZSBsYXJnZXN0IAogICAgIC8vIGVsZW1lbnQg
Zmlyc3QgYW5kIHdlIHdhbnQgdGhlIGxvd2VzdCB0aW1lIHRvIGJlIHRoZSBmaXJzdCBvbmUgaW4g
dGhlIGhlYXAuCkBAIC0zMTIsNiArMzEyLDU2IEBAIHZvaWQgVGltZXJCYXNlOjpoZWFwUG9wTWlu
KCkKICAgICBBU1NFUlQodGhpcyA9PSB0aW1lckhlYXAoKS5sYXN0KCkpOwogfQogCitzdGF0aWMg
aW5saW5lIGJvb2wgcGFyZW50SGVhcFByb3BlcnR5SG9sZHMoY29uc3QgVGltZXJCYXNlKiBjdXJy
ZW50LCBjb25zdCBWZWN0b3I8VGltZXJCYXNlKj4mIGhlYXAsIHVuc2lnbmVkIGN1cnJlbnRJbmRl
eCkKK3sKKyAgICBpZiAoIWN1cnJlbnRJbmRleCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
dW5zaWduZWQgcGFyZW50SW5kZXggPSAoY3VycmVudEluZGV4IC0gMSkgLyAyOworICAgIFRpbWVy
SGVhcExlc3NUaGFuRnVuY3Rpb24gY29tcGFyZUhlYXBQb3NpdGlvbjsKKyAgICByZXR1cm4gY29t
cGFyZUhlYXBQb3NpdGlvbihjdXJyZW50LCBoZWFwW3BhcmVudEluZGV4XSk7Cit9CisKK3N0YXRp
YyBpbmxpbmUgYm9vbCBjaGlsZEhlYXBQcm9wZXJ0eUhvbGRzKGNvbnN0IFRpbWVyQmFzZSogY3Vy
cmVudCwgY29uc3QgVmVjdG9yPFRpbWVyQmFzZSo+JiBoZWFwLCB1bnNpZ25lZCBjaGlsZEluZGV4
KQoreworICAgIGlmIChjaGlsZEluZGV4ID49IGhlYXAuc2l6ZSgpKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICBUaW1lckhlYXBMZXNzVGhhbkZ1bmN0aW9uIGNvbXBhcmVIZWFwUG9zaXRpb247
CisgICAgcmV0dXJuIGNvbXBhcmVIZWFwUG9zaXRpb24oaGVhcFtjaGlsZEluZGV4XSwgY3VycmVu
dCk7Cit9CisKK2Jvb2wgVGltZXJCYXNlOjpoYXNWYWxpZEhlYXBQb3NpdGlvbigpIGNvbnN0Cit7
CisgICAgaWYgKCFpbkhlYXAoKSB8fCAhbV9uZXh0RmlyZVRpbWUpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAvLyBDaGVjayBpZiB0aGUgaGVhcCBwcm9wZXJ0eSBzdGlsbCBob2xkcyB3aXRo
IHRoZSBuZXcgZmlyZSB0aW1lLiBJZiBpdCBkb2VzIHdlIGRvbid0IG5lZWQgdG8gZG8gYW55dGhp
bmcuCisgICAgLy8gVGhpcyBhc3N1bWVzIHRoYXQgdGhlIFNUTCBoZWFwIGlzIGEgc3RhbmRhcmQg
YmluYXJ5IGhlYXAuIEluIGFuIHVubGlrZWx5IGV2ZW50IGl0IGlzIG5vdCwgdGhlIGluZGV4IGFz
c2VydGlvbgorICAgIC8vIGluIHVwZGF0ZUhlYXBJZk5lZWRlZCgpIHdpbGwgZ2V0IGhpdC4KKyAg
ICBjb25zdCBWZWN0b3I8VGltZXJCYXNlKj4mIGhlYXAgPSB0aW1lckhlYXAoKTsKKyAgICBpZiAo
IXBhcmVudEhlYXBQcm9wZXJ0eUhvbGRzKHRoaXMsIGhlYXAsIG1faGVhcEluZGV4KSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIHVuc2lnbmVkIGNoaWxkSW5kZXgxID0gMiAqIG1faGVhcElu
ZGV4ICsgMTsKKyAgICB1bnNpZ25lZCBjaGlsZEluZGV4MiA9IGNoaWxkSW5kZXgxICsgMTsKKyAg
ICByZXR1cm4gY2hpbGRIZWFwUHJvcGVydHlIb2xkcyh0aGlzLCBoZWFwLCBjaGlsZEluZGV4MSkg
JiYgY2hpbGRIZWFwUHJvcGVydHlIb2xkcyh0aGlzLCBoZWFwLCBjaGlsZEluZGV4Mik7Cit9CisK
K3ZvaWQgVGltZXJCYXNlOjp1cGRhdGVIZWFwSWZOZWVkZWQoZG91YmxlIG9sZFRpbWUpCit7Cisg
ICAgaWYgKGhhc1ZhbGlkSGVhcFBvc2l0aW9uKCkpCisgICAgICAgIHJldHVybjsKKyNpZm5kZWYg
TkRFQlVHCisgICAgaW50IG9sZEhlYXBJbmRleCA9IG1faGVhcEluZGV4OworI2VuZGlmCisgICAg
aWYgKG9sZFRpbWUgPT0gMCkKKyAgICAgICAgaGVhcEluc2VydCgpOworICAgIGVsc2UgaWYgKG1f
bmV4dEZpcmVUaW1lID09IDApCisgICAgICAgIGhlYXBEZWxldGUoKTsKKyAgICBlbHNlIGlmICht
X25leHRGaXJlVGltZSA8IG9sZFRpbWUpCisgICAgICAgIGhlYXBEZWNyZWFzZUtleSgpOworICAg
IGVsc2UKKyAgICAgICAgaGVhcEluY3JlYXNlS2V5KCk7CisgICAgQVNTRVJUKG1faGVhcEluZGV4
ICE9IG9sZEhlYXBJbmRleCk7Cit9CisKIHZvaWQgVGltZXJCYXNlOjpzZXROZXh0RmlyZVRpbWUo
ZG91YmxlIG5ld1VuYWxpZ25lZFRpbWUpCiB7CiAgICAgQVNTRVJUKG1fdGhyZWFkID09IGN1cnJl
bnRUaHJlYWQoKSk7CkBAIC0zMzMsMTQgKzM4Myw3IEBAIHZvaWQgVGltZXJCYXNlOjpzZXROZXh0
RmlyZVRpbWUoZG91YmxlIG4KIAogICAgICAgICBib29sIHdhc0ZpcnN0VGltZXJJbkhlYXAgPSBt
X2hlYXBJbmRleCA9PSAwOwogCi0gICAgICAgIGlmIChvbGRUaW1lID09IDApCi0gICAgICAgICAg
ICBoZWFwSW5zZXJ0KCk7Ci0gICAgICAgIGVsc2UgaWYgKG5ld1RpbWUgPT0gMCkKLSAgICAgICAg
ICAgIGhlYXBEZWxldGUoKTsKLSAgICAgICAgZWxzZSBpZiAobmV3VGltZSA8IG9sZFRpbWUpCi0g
ICAgICAgICAgICBoZWFwRGVjcmVhc2VLZXkoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
aGVhcEluY3JlYXNlS2V5KCk7CisgICAgICAgIHVwZGF0ZUhlYXBJZk5lZWRlZChvbGRUaW1lKTsK
IAogICAgICAgICBib29sIGlzRmlyc3RUaW1lckluSGVhcCA9IG1faGVhcEluZGV4ID09IDA7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuaAkocmV2aXNpb24gMTQyNjUyKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzMsNiArNzMsOSBA
QCBwcml2YXRlOgogCiAgICAgYm9vbCBpbkhlYXAoKSBjb25zdCB7IHJldHVybiBtX2hlYXBJbmRl
eCAhPSAtMTsgfQogCisgICAgYm9vbCBoYXNWYWxpZEhlYXBQb3NpdGlvbigpIGNvbnN0OworICAg
IHZvaWQgdXBkYXRlSGVhcElmTmVlZGVkKGRvdWJsZSBvbGRUaW1lKTsKKwogICAgIHZvaWQgaGVh
cERlY3JlYXNlS2V5KCk7CiAgICAgdm9pZCBoZWFwRGVsZXRlKCk7CiAgICAgdm9pZCBoZWFwRGVs
ZXRlTWluKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188085</attachid>
            <date>2013-02-13 08:21:32 -0800</date>
            <delta_ts>2013-02-13 12:31:39 -0800</delta_ts>
            <desc>patch2</desc>
            <filename>timer-heap-check-2.patch</filename>
            <type>text/plain</type>
            <size>6019</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MjY4OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDEzLTAyLTEyICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBBdm9pZCB1cGRhdGluZyB0aW1l
ciBoZWFwIHdoZW4gbm90aGluZyBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk2MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXaGVuIHRoZSBmaXJlIHRpbWUgb2YgYSBUaW1lciBpcyBjaGFu
Z2VkIHdlIHJlbW92ZSBpdCBmcm9tIHRoZSB0aW1lciBoZWFwIGFuZCByZWluc2VydCBpdC4gVGhp
cyBpcyBwcmV0dHkgc2xvdy4gCisgICAgICAgIFR1cm5zIG91dCB0aGF0IGluIH44MCUgb2YgY2Fz
ZXMgd2UgYXJlIGFscmVhZHkgaW4gdGhlIGhlYXAgYW5kIHRoZSBpbnNlcnRpb24gcG9zaXRpb24g
aXMgdGhlIHNhbWUgYXMgdGhlIAorICAgICAgICBvcmlnaW5hbCBwb3NpdGlvbi4gV2UgY2FuIGNo
ZWNrIGlmIGFueXRoaW5nIGlzIGFjdHVhbGx5IGdvaW5nIHRvIGNoYW5nZSBiZWZvcmUgZG9pbmcg
dGhpcyB3b3JrLgorICAgICAgICAKKyAgICAgICAgVGhpcyBtYWtlcyBzdGFydGluZyBhIHRpbWVy
IH4zMCUgZmFzdGVyIGluIGF2ZXJhZ2UsIH4wLjElIHByb2dyZXNzaW9uIGluIFBMVDMuCisgICAg
ICAgIAorICAgICAgICAqIHBsYXRmb3JtL1RpbWVyLmNwcDoKKyAgICAgICAgKFRpbWVySGVhcExl
c3NUaGFuRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6VGltZXJIZWFwTGVzc1RoYW5GdW5j
dGlvbjo6b3BlcmF0b3IoKSk6CisgICAgICAgIChXZWJDb3JlOjpwYXJlbnRIZWFwUHJvcGVydHlI
b2xkcyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmNoaWxkSGVhcFBy
b3BlcnR5SG9sZHMpOgorICAgICAgICAoV2ViQ29yZTo6VGltZXJCYXNlOjpoYXNWYWxpZEhlYXBQ
b3NpdGlvbik6CisgICAgICAgIAorICAgICAgICAgICAgVGhlIGNvZGUgaGVhciBhc3N1bWVzIHRo
YXQgU1RMIGhlYXAgaXMgYSBub3JtYWwgYmluYXJ5IGhlYXAuIElmIHRoZXJlIGlzIGEgZGlmZmVy
ZW50IGltcGxlbWVudGF0aW9uCisgICAgICAgICAgICBzb21ld2hlcmUgdGhlIGFzc2VydGlvbnMg
d2lsbCBjYXRjaCBpdC4KKworICAgICAgICAoV2ViQ29yZTo6VGltZXJCYXNlOjp1cGRhdGVIZWFw
SWZOZWVkZWQpOgorICAgICAgICAKKyAgICAgICAgICAgIFNraXAgdXBkYXRpbmcgdGhlIGhlYXAg
aWYgaXQgaXMgYWxyZWFkeSB2YWxpZC4KKworICAgICAgICAoV2ViQ29yZTo6VGltZXJCYXNlOjpz
ZXROZXh0RmlyZVRpbWUpOgorICAgICAgICAqIHBsYXRmb3JtL1RpbWVyLmg6CisgICAgICAgIChU
aW1lckJhc2UpOgorCiAyMDEzLTAyLTEyICBSYXltb25kIFRveSAgPHJ0b3lAZ29vZ2xlLmNvbT4K
IAogICAgICAgICBTeW5jaHJvbml6ZSBzZXR0aW5nIG9mIHBhbm5lciBub2RlIG1vZGVsIGFuZCBw
cm9jZXNzaW5nCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuY3BwCShyZXZpc2lvbiAxNDI2
NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE2NywxMCArMTY3LDEwIEBAIGlubGluZSBwdHJkaWZmX3Qgb3BlcmF0b3ItKFRpbWVySGVh
cEl0ZXIKIAogY2xhc3MgVGltZXJIZWFwTGVzc1RoYW5GdW5jdGlvbiB7CiBwdWJsaWM6Ci0gICAg
Ym9vbCBvcGVyYXRvcigpKFRpbWVyQmFzZSosIFRpbWVyQmFzZSopIGNvbnN0OworICAgIGJvb2wg
b3BlcmF0b3IoKShjb25zdCBUaW1lckJhc2UqLCBjb25zdCBUaW1lckJhc2UqKSBjb25zdDsKIH07
CiAKLWlubGluZSBib29sIFRpbWVySGVhcExlc3NUaGFuRnVuY3Rpb246Om9wZXJhdG9yKCkoVGlt
ZXJCYXNlKiBhLCBUaW1lckJhc2UqIGIpIGNvbnN0CitpbmxpbmUgYm9vbCBUaW1lckhlYXBMZXNz
VGhhbkZ1bmN0aW9uOjpvcGVyYXRvcigpKGNvbnN0IFRpbWVyQmFzZSogYSwgY29uc3QgVGltZXJC
YXNlKiBiKSBjb25zdAogewogICAgIC8vIFRoZSBjb21wYXJpc29ucyBiZWxvdyBhcmUgImJhY2t3
YXJkcyIgYmVjYXVzZSB0aGUgaGVhcCBwdXRzIHRoZSBsYXJnZXN0IAogICAgIC8vIGVsZW1lbnQg
Zmlyc3QgYW5kIHdlIHdhbnQgdGhlIGxvd2VzdCB0aW1lIHRvIGJlIHRoZSBmaXJzdCBvbmUgaW4g
dGhlIGhlYXAuCkBAIC0zMTIsNiArMzEyLDU4IEBAIHZvaWQgVGltZXJCYXNlOjpoZWFwUG9wTWlu
KCkKICAgICBBU1NFUlQodGhpcyA9PSB0aW1lckhlYXAoKS5sYXN0KCkpOwogfQogCitzdGF0aWMg
aW5saW5lIGJvb2wgcGFyZW50SGVhcFByb3BlcnR5SG9sZHMoY29uc3QgVGltZXJCYXNlKiBjdXJy
ZW50LCBjb25zdCBWZWN0b3I8VGltZXJCYXNlKj4mIGhlYXAsIHVuc2lnbmVkIGN1cnJlbnRJbmRl
eCkKK3sKKyAgICBpZiAoIWN1cnJlbnRJbmRleCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
dW5zaWduZWQgcGFyZW50SW5kZXggPSAoY3VycmVudEluZGV4IC0gMSkgLyAyOworICAgIFRpbWVy
SGVhcExlc3NUaGFuRnVuY3Rpb24gY29tcGFyZUhlYXBQb3NpdGlvbjsKKyAgICByZXR1cm4gY29t
cGFyZUhlYXBQb3NpdGlvbihjdXJyZW50LCBoZWFwW3BhcmVudEluZGV4XSk7Cit9CisKK3N0YXRp
YyBpbmxpbmUgYm9vbCBjaGlsZEhlYXBQcm9wZXJ0eUhvbGRzKGNvbnN0IFRpbWVyQmFzZSogY3Vy
cmVudCwgY29uc3QgVmVjdG9yPFRpbWVyQmFzZSo+JiBoZWFwLCB1bnNpZ25lZCBjaGlsZEluZGV4
KQoreworICAgIGlmIChjaGlsZEluZGV4ID49IGhlYXAuc2l6ZSgpKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICBUaW1lckhlYXBMZXNzVGhhbkZ1bmN0aW9uIGNvbXBhcmVIZWFwUG9zaXRpb247
CisgICAgcmV0dXJuIGNvbXBhcmVIZWFwUG9zaXRpb24oaGVhcFtjaGlsZEluZGV4XSwgY3VycmVu
dCk7Cit9CisKK2Jvb2wgVGltZXJCYXNlOjpoYXNWYWxpZEhlYXBQb3NpdGlvbigpIGNvbnN0Cit7
CisgICAgQVNTRVJUKG1fbmV4dEZpcmVUaW1lKTsKKyAgICBpZiAoIWluSGVhcCgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgLy8gQ2hlY2sgaWYgdGhlIGhlYXAgcHJvcGVydHkgc3RpbGwg
aG9sZHMgd2l0aCB0aGUgbmV3IGZpcmUgdGltZS4gSWYgaXQgZG9lcyB3ZSBkb24ndCBuZWVkIHRv
IGRvIGFueXRoaW5nLgorICAgIC8vIFRoaXMgYXNzdW1lcyB0aGF0IHRoZSBTVEwgaGVhcCBpcyBh
IHN0YW5kYXJkIGJpbmFyeSBoZWFwLiBJbiBhbiB1bmxpa2VseSBldmVudCBpdCBpcyBub3QsIHRo
ZSBhc3NlcnRpb25zCisgICAgLy8gaW4gdXBkYXRlSGVhcElmTmVlZGVkKCkgd2lsbCBnZXQgaGl0
LgorICAgIGNvbnN0IFZlY3RvcjxUaW1lckJhc2UqPiYgaGVhcCA9IHRpbWVySGVhcCgpOworICAg
IGlmICghcGFyZW50SGVhcFByb3BlcnR5SG9sZHModGhpcywgaGVhcCwgbV9oZWFwSW5kZXgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgdW5zaWduZWQgY2hpbGRJbmRleDEgPSAyICogbV9o
ZWFwSW5kZXggKyAxOworICAgIHVuc2lnbmVkIGNoaWxkSW5kZXgyID0gY2hpbGRJbmRleDEgKyAx
OworICAgIHJldHVybiBjaGlsZEhlYXBQcm9wZXJ0eUhvbGRzKHRoaXMsIGhlYXAsIGNoaWxkSW5k
ZXgxKSAmJiBjaGlsZEhlYXBQcm9wZXJ0eUhvbGRzKHRoaXMsIGhlYXAsIGNoaWxkSW5kZXgyKTsK
K30KKwordm9pZCBUaW1lckJhc2U6OnVwZGF0ZUhlYXBJZk5lZWRlZChkb3VibGUgb2xkVGltZSkK
K3sKKyAgICBpZiAobV9uZXh0RmlyZVRpbWUgJiYgaGFzVmFsaWRIZWFwUG9zaXRpb24oKSkKKyAg
ICAgICAgcmV0dXJuOworI2lmbmRlZiBOREVCVUcKKyAgICBpbnQgb2xkSGVhcEluZGV4ID0gbV9o
ZWFwSW5kZXg7CisjZW5kaWYKKyAgICBpZiAoIW9sZFRpbWUpCisgICAgICAgIGhlYXBJbnNlcnQo
KTsKKyAgICBlbHNlIGlmICghbV9uZXh0RmlyZVRpbWUpCisgICAgICAgIGhlYXBEZWxldGUoKTsK
KyAgICBlbHNlIGlmIChtX25leHRGaXJlVGltZSA8IG9sZFRpbWUpCisgICAgICAgIGhlYXBEZWNy
ZWFzZUtleSgpOworICAgIGVsc2UKKyAgICAgICAgaGVhcEluY3JlYXNlS2V5KCk7CisgICAgQVNT
RVJUKG1faGVhcEluZGV4ICE9IG9sZEhlYXBJbmRleCk7CisgICAgQVNTRVJUKCFpbkhlYXAoKSB8
fCBoYXNWYWxpZEhlYXBQb3NpdGlvbigpKTsKK30KKwogdm9pZCBUaW1lckJhc2U6OnNldE5leHRG
aXJlVGltZShkb3VibGUgbmV3VW5hbGlnbmVkVGltZSkKIHsKICAgICBBU1NFUlQobV90aHJlYWQg
PT0gY3VycmVudFRocmVhZCgpKTsKQEAgLTMzMywxNCArMzg1LDcgQEAgdm9pZCBUaW1lckJhc2U6
OnNldE5leHRGaXJlVGltZShkb3VibGUgbgogCiAgICAgICAgIGJvb2wgd2FzRmlyc3RUaW1lcklu
SGVhcCA9IG1faGVhcEluZGV4ID09IDA7CiAKLSAgICAgICAgaWYgKG9sZFRpbWUgPT0gMCkKLSAg
ICAgICAgICAgIGhlYXBJbnNlcnQoKTsKLSAgICAgICAgZWxzZSBpZiAobmV3VGltZSA9PSAwKQot
ICAgICAgICAgICAgaGVhcERlbGV0ZSgpOwotICAgICAgICBlbHNlIGlmIChuZXdUaW1lIDwgb2xk
VGltZSkKLSAgICAgICAgICAgIGhlYXBEZWNyZWFzZUtleSgpOwotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBoZWFwSW5jcmVhc2VLZXkoKTsKKyAgICAgICAgdXBkYXRlSGVhcElmTmVlZGVkKG9s
ZFRpbWUpOwogCiAgICAgICAgIGJvb2wgaXNGaXJzdFRpbWVySW5IZWFwID0gbV9oZWFwSW5kZXgg
PT0gMDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5oCShyZXZpc2lvbiAxNDI2NTIpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw2
ICs3Myw5IEBAIHByaXZhdGU6CiAKICAgICBib29sIGluSGVhcCgpIGNvbnN0IHsgcmV0dXJuIG1f
aGVhcEluZGV4ICE9IC0xOyB9CiAKKyAgICBib29sIGhhc1ZhbGlkSGVhcFBvc2l0aW9uKCkgY29u
c3Q7CisgICAgdm9pZCB1cGRhdGVIZWFwSWZOZWVkZWQoZG91YmxlIG9sZFRpbWUpOworCiAgICAg
dm9pZCBoZWFwRGVjcmVhc2VLZXkoKTsKICAgICB2b2lkIGhlYXBEZWxldGUoKTsKICAgICB2b2lk
IGhlYXBEZWxldGVNaW4oKTsKQEAgLTgxLDggKzg0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGhl
YXBQb3AoKTsKICAgICB2b2lkIGhlYXBQb3BNaW4oKTsKIAotICAgIGNvbnN0IFZlY3RvcjxUaW1l
ckJhc2UqPiYgdGltZXJIZWFwKCkgY29uc3QgeyBBU1NFUlQobV9jYWNoZWRUaHJlYWRHbG9iYWxU
aW1lckhlYXApOyByZXR1cm4gKm1fY2FjaGVkVGhyZWFkR2xvYmFsVGltZXJIZWFwOyB9Ci0gICAg
VmVjdG9yPFRpbWVyQmFzZSo+JiB0aW1lckhlYXAoKSB7IEFTU0VSVChtX2NhY2hlZFRocmVhZEds
b2JhbFRpbWVySGVhcCk7IHJldHVybiAqbV9jYWNoZWRUaHJlYWRHbG9iYWxUaW1lckhlYXA7IH0K
KyAgICBWZWN0b3I8VGltZXJCYXNlKj4mIHRpbWVySGVhcCgpIGNvbnN0IHsgQVNTRVJUKG1fY2Fj
aGVkVGhyZWFkR2xvYmFsVGltZXJIZWFwKTsgcmV0dXJuICptX2NhY2hlZFRocmVhZEdsb2JhbFRp
bWVySGVhcDsgfQogCiAgICAgZG91YmxlIG1fbmV4dEZpcmVUaW1lOyAvLyAwIGlmIGluYWN0aXZl
CiAgICAgZG91YmxlIG1fdW5hbGlnbmVkTmV4dEZpcmVUaW1lOyAvLyBtX25leHRGaXJlVGltZSBu
b3QgY29uc2lkZXJpbmcgYWxpZ25tZW50IGludGVydmFsCg==
</data>
<flag name="review"
          id="208095"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>