<?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>150218</bug_id>
          
          <creation_ts>2015-10-15 17:56:39 -0700</creation_ts>
          <short_desc>bmalloc: per-thread cache data structure should be smaller</short_desc>
          <delta_ts>2015-10-16 13:00:04 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit 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="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>barraclough</cc>
    
    <cc>kling</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1133722</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-10-15 17:56:39 -0700</bug_when>
    <thetext>bmalloc: per-thread cache data structure should be smaller</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133723</commentid>
    <comment_count>1</comment_count>
      <attachid>263234</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-10-15 18:00:04 -0700</bug_when>
    <thetext>Created attachment 263234
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133724</commentid>
    <comment_count>2</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-10-15 18:00:28 -0700</bug_when>
    <thetext>~/OpenSource/WebKitBuild&gt; ~/OpenSource/PerformanceTests/MallocBench/run-malloc-benchmarks Baseline:~/OpenSource/WebKitBuild/ReleaseBaseline/ Patch:~/OpenSource/WebKitBuild/Release/
                                                                                
                                                      Baseline                          Patch                              Δ
Execution Time:
    churn                                                 72ms                           67ms                 ^ 1.07x faster
    list_allocate                                         69ms                           67ms                 ^ 1.03x faster
    tree_allocate                                         66ms                           65ms                 ^ 1.02x faster
    tree_churn                                            76ms                           75ms                 ^ 1.01x faster
    fragment                                              61ms                           61ms                               
    fragment_iterate                                      51ms                           51ms                               
    medium                                               165ms                          164ms                 ^ 1.01x faster
    big                                                  123ms                          124ms                 ! 1.01x slower
    facebook                                             152ms                          153ms                 ! 1.01x slower
    reddit                                                72ms                           72ms                               
    flickr                                                79ms                           79ms                               
    theverge                                              95ms                           97ms                 ! 1.02x slower
    message_one                                          199ms                          200ms                 ! 1.01x slower
    message_many                                         934ms                          937ms                  ! 1.0x slower
    churn --parallel                                      88ms                           90ms                 ! 1.02x slower
    list_allocate --parallel                             223ms                          224ms                  ! 1.0x slower
    tree_allocate --parallel                           1,183ms                        1,191ms                 ! 1.01x slower
    tree_churn --parallel                              1,184ms                        1,219ms                 ! 1.03x slower
    fragment --parallel                                  108ms                          111ms                 ! 1.03x slower
    fragment_iterate --parallel                           13ms                           12ms                 ^ 1.08x faster
    medium --parallel                                    264ms                          267ms                 ! 1.01x slower
    big --parallel                                        83ms                           83ms                               

    &lt;geometric mean&gt;                                     127ms                          127ms                  ^ 1.0x faster
    &lt;arithmetic mean&gt;                                    244ms                          246ms                 ! 1.01x slower
    &lt;harmonic mean&gt;                                       80ms                           78ms                 ^ 1.03x faster

Peak Memory:
    churn                                                900kB                          888kB                ^ 1.01x smaller
    list_allocate                                      2,204kB                        2,192kB                ^ 1.01x smaller
    tree_allocate                                      5,632kB                        5,620kB                 ^ 1.0x smaller
    tree_churn                                         4,900kB                        4,912kB                  ! 1.0x bigger
    fragment                                           7,160kB                        7,148kB                 ^ 1.0x smaller
    fragment_iterate                                  25,928kB                       25,916kB                 ^ 1.0x smaller
    medium                                         1,070,432kB                    1,070,420kB                 ^ 1.0x smaller
    big                                            1,062,424kB                    1,062,412kB                 ^ 1.0x smaller
    facebook                                          77,648kB                       77,620kB                 ^ 1.0x smaller
    reddit                                            15,084kB                       15,076kB                 ^ 1.0x smaller
    flickr                                            27,488kB                       27,484kB                 ^ 1.0x smaller
    theverge                                          28,716kB                       28,700kB                 ^ 1.0x smaller
    message_one                                        4,568kB                        4,556kB                 ^ 1.0x smaller
    message_many                                       2,900kB                        2,852kB                ^ 1.02x smaller
    churn --parallel                                   1,960kB                        1,668kB                ^ 1.18x smaller
    list_allocate --parallel                           3,412kB                        3,124kB                ^ 1.09x smaller
    tree_allocate --parallel                          13,764kB                       12,996kB                ^ 1.06x smaller
    tree_churn --parallel                             13,524kB                       13,204kB                ^ 1.02x smaller
    fragment --parallel                                7,296kB                        7,040kB                ^ 1.04x smaller
    fragment_iterate --parallel                       27,020kB                       26,560kB                ^ 1.02x smaller
    medium --parallel                              1,042,576kB                    1,040,032kB                 ^ 1.0x smaller
    big --parallel                                 1,011,296kB                      996,568kB                ^ 1.01x smaller

    &lt;geometric mean&gt;                                  19,877kB                       19,481kB                ^ 1.02x smaller
    &lt;arithmetic mean&gt;                                202,583kB                      201,681kB                 ^ 1.0x smaller
    &lt;harmonic mean&gt;                                    5,546kB                        5,341kB                ^ 1.04x smaller

Memory at End:
    churn                                                500kB                          488kB                ^ 1.02x smaller
    list_allocate                                        520kB                          508kB                ^ 1.02x smaller
    tree_allocate                                        612kB                          600kB                ^ 1.02x smaller
    tree_churn                                           584kB                          572kB                ^ 1.02x smaller
    fragment                                             612kB                          600kB                ^ 1.02x smaller
    fragment_iterate                                     940kB                          928kB                ^ 1.01x smaller
    medium                                             6,804kB                        6,792kB                 ^ 1.0x smaller
    big                                                6,780kB                        7,136kB                 ! 1.05x bigger
    facebook                                           3,476kB                        3,456kB                ^ 1.01x smaller
    reddit                                             2,136kB                        2,124kB                ^ 1.01x smaller
    flickr                                             3,192kB                        3,172kB                ^ 1.01x smaller
    theverge                                           3,252kB                        3,240kB                 ^ 1.0x smaller
    message_one                                          904kB                          860kB                ^ 1.05x smaller
    message_many                                       1,296kB                        1,312kB                 ! 1.01x bigger
    churn --parallel                                   1,544kB                        1,260kB                ^ 1.23x smaller
    list_allocate --parallel                           1,992kB                        1,740kB                ^ 1.14x smaller
    tree_allocate --parallel                           2,488kB                        2,084kB                ^ 1.19x smaller
    tree_churn --parallel                              4,896kB                        4,644kB                ^ 1.05x smaller
    fragment --parallel                                1,840kB                        1,544kB                ^ 1.19x smaller
    fragment_iterate --parallel                        2,232kB                        1,932kB                ^ 1.16x smaller
    medium --parallel                                  7,672kB                        7,408kB                ^ 1.04x smaller
    big --parallel                                     7,492kB                        7,112kB                ^ 1.05x smaller

    &lt;geometric mean&gt;                                   1,932kB                        1,838kB                ^ 1.05x smaller
    &lt;arithmetic mean&gt;                                  2,807kB                        2,705kB                ^ 1.04x smaller
    &lt;harmonic mean&gt;                                    1,331kB                        1,273kB                ^ 1.05x smaller

=====
~/OpenSource/WebKitBuild&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133726</commentid>
    <comment_count>3</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-10-15 18:02:18 -0700</bug_when>
    <thetext>So, a bit faster for single-threaded code, a bit slower for 24-wide multi-threaded code, and definitively smaller. I think this is a good tradeoff.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133750</commentid>
    <comment_count>4</comment_count>
      <attachid>263234</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-10-15 20:45:13 -0700</bug_when>
    <thetext>Comment on attachment 263234
Patch

r=me, awesome!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133988</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-10-16 13:00:04 -0700</bug_when>
    <thetext>Committed r191196: &lt;http://trac.webkit.org/changeset/191196&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263234</attachid>
            <date>2015-10-15 18:00:04 -0700</date>
            <delta_ts>2015-10-15 20:45:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150218-20151015175926.patch</filename>
            <type>text/plain</type>
            <size>9903</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1h
bGxvYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MTE1NykKKysrIFNvdXJjZS9ibWFsbG9jL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDE1LTEwLTE1ICBHZW9mZnJl
eSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgYm1hbGxvYzogcGVyLXRocmVh
ZCBjYWNoZSBkYXRhIHN0cnVjdHVyZSBzaG91bGQgYmUgc21hbGxlcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwMjE4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVkdWNlIHRoZSBudW1iZXIgb2YgZW50
cmllcyBpbiB0aGUgcmFuZ2UgY2FjaGUgYmVjYXVzZSBpdCdzIHJlYWxseQorICAgICAgICBiaWcs
IGFuZCB0aGUgYmlnbmVzcyBvbmx5IGhlbHBzIGluIGNhc2VzIG9mIHNlcmlvdXMgZnJhZ21lbnRh
dGlvbiwgYW5kCisgICAgICAgIGl0IG9ubHkgc2F2ZXMgdXMgYSBsaXR0bGUgYml0IG9mIGxvY2sg
YWNxdWlzaXRpb24gdGltZS4KKworICAgICAgICAqIGJtYWxsb2MvQWxsb2NhdG9yLmNwcDoKKyAg
ICAgICAgKGJtYWxsb2M6OkFsbG9jYXRvcjo6c2NhdmVuZ2UpOgorICAgICAgICAoYm1hbGxvYzo6
QWxsb2NhdG9yOjpyZWZpbGxBbGxvY2F0b3JTbG93Q2FzZSk6CisgICAgICAgIChibWFsbG9jOjpB
bGxvY2F0b3I6OnJlZmlsbEFsbG9jYXRvcik6CisgICAgICAgIChibWFsbG9jOjpBbGxvY2F0b3I6
OmFsbG9jYXRlTGFyZ2UpOgorICAgICAgICAoYm1hbGxvYzo6QWxsb2NhdG9yOjphbGxvY2F0ZVNs
b3dDYXNlKToKKyAgICAgICAgKGJtYWxsb2M6OkFsbG9jYXRvcjo6YWxsb2NhdGVCdW1wUmFuZ2VT
bG93Q2FzZSk6IERlbGV0ZWQuCisgICAgICAgIChibWFsbG9jOjpBbGxvY2F0b3I6OmFsbG9jYXRl
QnVtcFJhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBibWFsbG9jL0FsbG9jYXRvci5oOiBQYXNz
IHRocm91Z2ggdGhlIGVtcHR5IGFsbG9jYXRvciBhbmQgdGhlIHJhbmdlCisgICAgICAgIGNhY2hl
IHdoZW4gcmVmaWxsaW5nLCBhbmQgcmVmaWxsIGJvdGguIE90aGVyd2lzZSwgd2UgYWx3YXlzIGlt
bWVkaWF0ZWx5CisgICAgICAgIHBvcCB0aGUgbGFzdCBpdGVtIGluIHRoZSByYW5nZSBjYWNoZSwg
d2FzdGluZyB0aGF0IHNsb3Qgb2YgY2FwYWNpdHkuCisKKyAgICAgICAgKiBibWFsbG9jL0hlYXAu
Y3BwOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6YWxsb2NhdGVTbWFsbEJ1bXBSYW5nZXMpOgor
ICAgICAgICAoYm1hbGxvYzo6SGVhcDo6YWxsb2NhdGVNZWRpdW1CdW1wUmFuZ2VzKTogQWNjb3Vu
dCBmb3IgdGhlIGZhY3QgdGhhdAorICAgICAgICB0aGUgcmFuZ2UgY2FjaGUgaXMgbm8gbG9uZ2Vy
IGJpZyBlbm91Z2ggdG8gZ3VhcmFudGVlIHRoYXQgaXQgY2FuIGhvbGQKKyAgICAgICAgYWxsIHRo
ZSByYW5nZXMgaW4gYSBwYWdlLgorCisgICAgICAgIChibWFsbG9jOjpIZWFwOjpyZWZpbGxTbWFs
bEJ1bXBSYW5nZUNhY2hlKTogRGVsZXRlZC4KKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OnJlZmls
bE1lZGl1bUJ1bXBSYW5nZUNhY2hlKTogRGVsZXRlZC4KKworICAgICAgICAqIGJtYWxsb2MvSGVh
cC5oOiBNb3ZlIFZNSGVhcCB0byB0aGUgZW5kIG9mIHRoZSBvYmplY3QgYmVjYXVzZSBpdAorICAg
ICAgICBjb250YWlucyBhIGxvdCBvZiB1bnVzZWQgLyB3YXN0ZWQgc3BhY2UsIGFuZCB3ZSB3YW50
IHRvIHBhY2sgb3VyIGRhdGEKKyAgICAgICAgdG9nZXRoZXIgaW4gbWVtb3J5LgorCisgICAgICAg
ICogYm1hbGxvYy9TaXplcy5oOiBNYWtlIHRoZSByYW5nZSBjYWNoZSBzbWFsbGVyLgorCiAyMDE1
LTEwLTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQXZvaWQg
dXNlbGVzcyBjb3BpZXMgaW4gcmFuZ2UtbG9vcHMgdGhhdCBhcmUgdXNpbmcgJ2F1dG8nCkluZGV4
OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0FsbG9jYXRvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9BbGxvY2F0b3IuY3BwCShyZXZpc2lvbiAxOTExNTEpCisrKyBT
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0FsbG9jYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIw
MywyNSArMjAzLDIzIEBAIHZvaWQgQWxsb2NhdG9yOjpzY2F2ZW5nZSgpCiAgICAgfQogfQogCi1O
T19JTkxJTkUgQnVtcFJhbmdlIEFsbG9jYXRvcjo6YWxsb2NhdGVCdW1wUmFuZ2VTbG93Q2FzZShz
aXplX3Qgc2l6ZUNsYXNzKQorTk9fSU5MSU5FIHZvaWQgQWxsb2NhdG9yOjpyZWZpbGxBbGxvY2F0
b3JTbG93Q2FzZShCdW1wQWxsb2NhdG9yJiBhbGxvY2F0b3IsIHNpemVfdCBzaXplQ2xhc3MpCiB7
CiAgICAgQnVtcFJhbmdlQ2FjaGUmIGJ1bXBSYW5nZUNhY2hlID0gbV9idW1wUmFuZ2VDYWNoZXNb
c2l6ZUNsYXNzXTsKIAogICAgIHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4gbG9jayhQZXJQ
cm9jZXNzPEhlYXA+OjptdXRleCgpKTsKICAgICBpZiAoc2l6ZUNsYXNzIDw9IGJtYWxsb2M6OnNp
emVDbGFzcyhzbWFsbE1heCkpCi0gICAgICAgIFBlclByb2Nlc3M8SGVhcD46OmdldEZhc3RDYXNl
KCktPnJlZmlsbFNtYWxsQnVtcFJhbmdlQ2FjaGUobG9jaywgc2l6ZUNsYXNzLCBidW1wUmFuZ2VD
YWNoZSk7CisgICAgICAgIFBlclByb2Nlc3M8SGVhcD46OmdldEZhc3RDYXNlKCktPmFsbG9jYXRl
U21hbGxCdW1wUmFuZ2VzKGxvY2ssIHNpemVDbGFzcywgYWxsb2NhdG9yLCBidW1wUmFuZ2VDYWNo
ZSk7CiAgICAgZWxzZQotICAgICAgICBQZXJQcm9jZXNzPEhlYXA+OjpnZXRGYXN0Q2FzZSgpLT5y
ZWZpbGxNZWRpdW1CdW1wUmFuZ2VDYWNoZShsb2NrLCBzaXplQ2xhc3MsIGJ1bXBSYW5nZUNhY2hl
KTsKLQotICAgIHJldHVybiBidW1wUmFuZ2VDYWNoZS5wb3AoKTsKKyAgICAgICAgUGVyUHJvY2Vz
czxIZWFwPjo6Z2V0RmFzdENhc2UoKS0+YWxsb2NhdGVNZWRpdW1CdW1wUmFuZ2VzKGxvY2ssIHNp
emVDbGFzcywgYWxsb2NhdG9yLCBidW1wUmFuZ2VDYWNoZSk7CiB9CiAKLUlOTElORSBCdW1wUmFu
Z2UgQWxsb2NhdG9yOjphbGxvY2F0ZUJ1bXBSYW5nZShzaXplX3Qgc2l6ZUNsYXNzKQorSU5MSU5F
IHZvaWQgQWxsb2NhdG9yOjpyZWZpbGxBbGxvY2F0b3IoQnVtcEFsbG9jYXRvciYgYWxsb2NhdG9y
LCBzaXplX3Qgc2l6ZUNsYXNzKQogewogICAgIEJ1bXBSYW5nZUNhY2hlJiBidW1wUmFuZ2VDYWNo
ZSA9IG1fYnVtcFJhbmdlQ2FjaGVzW3NpemVDbGFzc107CiAgICAgaWYgKCFidW1wUmFuZ2VDYWNo
ZS5zaXplKCkpCi0gICAgICAgIHJldHVybiBhbGxvY2F0ZUJ1bXBSYW5nZVNsb3dDYXNlKHNpemVD
bGFzcyk7Ci0gICAgcmV0dXJuIGJ1bXBSYW5nZUNhY2hlLnBvcCgpOworICAgICAgICByZXR1cm4g
cmVmaWxsQWxsb2NhdG9yU2xvd0Nhc2UoYWxsb2NhdG9yLCBzaXplQ2xhc3MpOworICAgIHJldHVy
biBhbGxvY2F0b3IucmVmaWxsKGJ1bXBSYW5nZUNhY2hlLnBvcCgpKTsKIH0KIAogTk9fSU5MSU5F
IHZvaWQqIEFsbG9jYXRvcjo6YWxsb2NhdGVMYXJnZShzaXplX3Qgc2l6ZSkKQEAgLTI0Niw3ICsy
NDQsNyBAQCB2b2lkKiBBbGxvY2F0b3I6OmFsbG9jYXRlU2xvd0Nhc2Uoc2l6ZV90CiAgICAgaWYg
KHNpemUgPD0gbWVkaXVtTWF4KSB7CiAgICAgICAgIHNpemVfdCBzaXplQ2xhc3MgPSBibWFsbG9j
OjpzaXplQ2xhc3Moc2l6ZSk7CiAgICAgICAgIEJ1bXBBbGxvY2F0b3ImIGFsbG9jYXRvciA9IG1f
YnVtcEFsbG9jYXRvcnNbc2l6ZUNsYXNzXTsKLSAgICAgICAgYWxsb2NhdG9yLnJlZmlsbChhbGxv
Y2F0ZUJ1bXBSYW5nZShzaXplQ2xhc3MpKTsKKyAgICAgICAgcmVmaWxsQWxsb2NhdG9yKGFsbG9j
YXRvciwgc2l6ZUNsYXNzKTsKICAgICAgICAgcmV0dXJuIGFsbG9jYXRvci5hbGxvY2F0ZSgpOwog
ICAgIH0KIApJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9BbGxvY2F0b3IuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0FsbG9jYXRvci5oCShyZXZpc2lvbiAxOTEx
NTEpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0FsbG9jYXRvci5oCSh3b3JraW5nIGNvcHkp
CkBAIC01Niw4ICs1Niw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCogYWxsb2NhdGVMYXJnZShzaXpl
X3QpOwogICAgIHZvaWQqIGFsbG9jYXRlWExhcmdlKHNpemVfdCk7CiAgICAgCi0gICAgQnVtcFJh
bmdlIGFsbG9jYXRlQnVtcFJhbmdlKHNpemVfdCBzaXplQ2xhc3MpOwotICAgIEJ1bXBSYW5nZSBh
bGxvY2F0ZUJ1bXBSYW5nZVNsb3dDYXNlKHNpemVfdCBzaXplQ2xhc3MpOworICAgIHZvaWQgcmVm
aWxsQWxsb2NhdG9yKEJ1bXBBbGxvY2F0b3ImLCBzaXplX3Qgc2l6ZUNsYXNzKTsKKyAgICB2b2lk
IHJlZmlsbEFsbG9jYXRvclNsb3dDYXNlKEJ1bXBBbGxvY2F0b3ImLCBzaXplX3Qgc2l6ZUNsYXNz
KTsKICAgICAKICAgICBzdGQ6OmFycmF5PEJ1bXBBbGxvY2F0b3IsIG1lZGl1bU1heCAvIGFsaWdu
bWVudD4gbV9idW1wQWxsb2NhdG9yczsKICAgICBzdGQ6OmFycmF5PEJ1bXBSYW5nZUNhY2hlLCBt
ZWRpdW1NYXggLyBhbGlnbm1lbnQ+IG1fYnVtcFJhbmdlQ2FjaGVzOwpJbmRleDogU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9IZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0hlYXAuY3BwCShyZXZpc2lvbiAxOTExNTEpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAgKi8KIAogI2luY2x1
ZGUgIkhlYXAuaCIKKyNpbmNsdWRlICJCdW1wQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiTGFyZ2VD
aHVuay5oIgogI2luY2x1ZGUgIkxhcmdlT2JqZWN0LmgiCiAjaW5jbHVkZSAiTGluZS5oIgpAQCAt
MTE5LDcgKzEyMCw3IEBAIHZvaWQgSGVhcDo6c2NhdmVuZ2VMYXJnZU9iamVjdHMoc3RkOjp1bmkK
ICAgICB9CiB9CiAKLXZvaWQgSGVhcDo6cmVmaWxsU21hbGxCdW1wUmFuZ2VDYWNoZShzdGQ6Omxv
Y2tfZ3VhcmQ8U3RhdGljTXV0ZXg+JiBsb2NrLCBzaXplX3Qgc2l6ZUNsYXNzLCBCdW1wUmFuZ2VD
YWNoZSYgcmFuZ2VDYWNoZSkKK3ZvaWQgSGVhcDo6YWxsb2NhdGVTbWFsbEJ1bXBSYW5nZXMoc3Rk
Ojpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYgbG9jaywgc2l6ZV90IHNpemVDbGFzcywgQnVtcEFs
bG9jYXRvciYgYWxsb2NhdG9yLCBCdW1wUmFuZ2VDYWNoZSYgcmFuZ2VDYWNoZSkKIHsKICAgICBC
QVNTRVJUKCFyYW5nZUNhY2hlLnNpemUoKSk7CiAgICAgU21hbGxQYWdlKiBwYWdlID0gYWxsb2Nh
dGVTbWFsbFBhZ2UobG9jaywgc2l6ZUNsYXNzKTsKQEAgLTEzNSw2ICsxMzYsMTIgQEAgdm9pZCBI
ZWFwOjpyZWZpbGxTbWFsbEJ1bXBSYW5nZUNhY2hlKHN0ZAogICAgICAgICBpZiAobGluZXNbbGlu
ZU51bWJlcl0ucmVmQ291bnQobG9jaykpCiAgICAgICAgICAgICBjb250aW51ZTsKIAorICAgICAg
ICAvLyBJbiBhIGZyYWdtZW50ZWQgcGFnZSwgc29tZSBmcmVlIHJhbmdlcyBtaWdodCBub3QgZml0
IGluIHRoZSBjYWNoZS4KKyAgICAgICAgaWYgKHJhbmdlQ2FjaGUuc2l6ZSgpID09IHJhbmdlQ2Fj
aGUuY2FwYWNpdHkoKSkgeworICAgICAgICAgICAgbV9zbWFsbFBhZ2VzV2l0aEZyZWVMaW5lc1tz
aXplQ2xhc3NdLnB1c2gocGFnZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwog
ICAgICAgICBMaW5lTWV0YWRhdGEmIGxpbmVNZXRhZGF0YSA9IG1fc21hbGxMaW5lTWV0YWRhdGFb
c2l6ZUNsYXNzXVtsaW5lTnVtYmVyXTsKICAgICAgICAgY2hhciogYmVnaW4gPSBsaW5lc1tsaW5l
TnVtYmVyXS5iZWdpbigpICsgbGluZU1ldGFkYXRhLnN0YXJ0T2Zmc2V0OwogICAgICAgICB1bnNp
Z25lZCBzaG9ydCBvYmplY3RDb3VudCA9IGxpbmVNZXRhZGF0YS5vYmplY3RDb3VudDsKQEAgLTE1
MiwxMSArMTU5LDE0IEBAIHZvaWQgSGVhcDo6cmVmaWxsU21hbGxCdW1wUmFuZ2VDYWNoZShzdGQK
ICAgICAgICAgICAgIHBhZ2UtPnJlZihsb2NrKTsKICAgICAgICAgfQogCi0gICAgICAgIHJhbmdl
Q2FjaGUucHVzaCh7IGJlZ2luLCBvYmplY3RDb3VudCB9KTsKKyAgICAgICAgaWYgKCFhbGxvY2F0
b3IuY2FuQWxsb2NhdGUoKSkKKyAgICAgICAgICAgIGFsbG9jYXRvci5yZWZpbGwoeyBiZWdpbiwg
b2JqZWN0Q291bnQgfSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJhbmdlQ2FjaGUucHVz
aCh7IGJlZ2luLCBvYmplY3RDb3VudCB9KTsKICAgICB9CiB9CiAKLXZvaWQgSGVhcDo6cmVmaWxs
TWVkaXVtQnVtcFJhbmdlQ2FjaGUoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYgbG9jaywg
c2l6ZV90IHNpemVDbGFzcywgQnVtcFJhbmdlQ2FjaGUmIHJhbmdlQ2FjaGUpCit2b2lkIEhlYXA6
OmFsbG9jYXRlTWVkaXVtQnVtcFJhbmdlcyhzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+JiBs
b2NrLCBzaXplX3Qgc2l6ZUNsYXNzLCBCdW1wQWxsb2NhdG9yJiBhbGxvY2F0b3IsIEJ1bXBSYW5n
ZUNhY2hlJiByYW5nZUNhY2hlKQogewogICAgIE1lZGl1bVBhZ2UqIHBhZ2UgPSBhbGxvY2F0ZU1l
ZGl1bVBhZ2UobG9jaywgc2l6ZUNsYXNzKTsKICAgICBCQVNTRVJUKCFyYW5nZUNhY2hlLnNpemUo
KSk7CkBAIC0xNzIsNiArMTgyLDEyIEBAIHZvaWQgSGVhcDo6cmVmaWxsTWVkaXVtQnVtcFJhbmdl
Q2FjaGUoc3QKICAgICAgICAgaWYgKGxpbmVzW2xpbmVOdW1iZXJdLnJlZkNvdW50KGxvY2spKQog
ICAgICAgICAgICAgY29udGludWU7CiAKKyAgICAgICAgLy8gSW4gYSBmcmFnbWVudGVkIHBhZ2Us
IHNvbWUgZnJlZSByYW5nZXMgbWlnaHQgbm90IGZpdCBpbiB0aGUgY2FjaGUuCisgICAgICAgIGlm
IChyYW5nZUNhY2hlLnNpemUoKSA9PSByYW5nZUNhY2hlLmNhcGFjaXR5KCkpIHsKKyAgICAgICAg
ICAgIG1fbWVkaXVtUGFnZXNXaXRoRnJlZUxpbmVzW3NpemVDbGFzc10ucHVzaChwYWdlKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAgICAgICAgIExpbmVNZXRhZGF0YSYgbGlu
ZU1ldGFkYXRhID0gbV9tZWRpdW1MaW5lTWV0YWRhdGFbc2l6ZUNsYXNzXVtsaW5lTnVtYmVyXTsK
ICAgICAgICAgY2hhciogYmVnaW4gPSBsaW5lc1tsaW5lTnVtYmVyXS5iZWdpbigpICsgbGluZU1l
dGFkYXRhLnN0YXJ0T2Zmc2V0OwogICAgICAgICB1bnNpZ25lZCBzaG9ydCBvYmplY3RDb3VudCA9
IGxpbmVNZXRhZGF0YS5vYmplY3RDb3VudDsKQEAgLTE4OSw3ICsyMDUsMTAgQEAgdm9pZCBIZWFw
OjpyZWZpbGxNZWRpdW1CdW1wUmFuZ2VDYWNoZShzdAogICAgICAgICAgICAgcGFnZS0+cmVmKGxv
Y2spOwogICAgICAgICB9CiAKLSAgICAgICAgcmFuZ2VDYWNoZS5wdXNoKHsgYmVnaW4sIG9iamVj
dENvdW50IH0pOworICAgICAgICBpZiAoIWFsbG9jYXRvci5jYW5BbGxvY2F0ZSgpKQorICAgICAg
ICAgICAgYWxsb2NhdG9yLnJlZmlsbCh7IGJlZ2luLCBvYmplY3RDb3VudCB9KTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgcmFuZ2VDYWNoZS5wdXNoKHsgYmVnaW4sIG9iamVjdENvdW50IH0p
OwogICAgIH0KIH0KIApJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmgJKHJldmlzaW9uIDE5MTE1MSkK
KysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2
ICs0NSw3IEBACiBuYW1lc3BhY2UgYm1hbGxvYyB7CiAKIGNsYXNzIEJlZ2luVGFnOworY2xhc3Mg
QnVtcEFsbG9jYXRvcjsKIGNsYXNzIEVuZFRhZzsKIAogY2xhc3MgSGVhcCB7CkBAIC01MywxMCAr
NTQsMTAgQEAgcHVibGljOgogICAgIAogICAgIEVudmlyb25tZW50JiBlbnZpcm9ubWVudCgpIHsg
cmV0dXJuIG1fZW52aXJvbm1lbnQ7IH0KIAotICAgIHZvaWQgcmVmaWxsU21hbGxCdW1wUmFuZ2VD
YWNoZShzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+Jiwgc2l6ZV90IHNpemVDbGFzcywgQnVt
cFJhbmdlQ2FjaGUmKTsKKyAgICB2b2lkIGFsbG9jYXRlU21hbGxCdW1wUmFuZ2VzKHN0ZDo6bG9j
a19ndWFyZDxTdGF0aWNNdXRleD4mLCBzaXplX3Qgc2l6ZUNsYXNzLCBCdW1wQWxsb2NhdG9yJiwg
QnVtcFJhbmdlQ2FjaGUmKTsKICAgICB2b2lkIGRlcmVmU21hbGxMaW5lKHN0ZDo6bG9ja19ndWFy
ZDxTdGF0aWNNdXRleD4mLCBTbWFsbExpbmUqKTsKIAotICAgIHZvaWQgcmVmaWxsTWVkaXVtQnVt
cFJhbmdlQ2FjaGUoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYsIHNpemVfdCBzaXplQ2xh
c3MsIEJ1bXBSYW5nZUNhY2hlJik7CisgICAgdm9pZCBhbGxvY2F0ZU1lZGl1bUJ1bXBSYW5nZXMo
c3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYsIHNpemVfdCBzaXplQ2xhc3MsIEJ1bXBBbGxv
Y2F0b3ImLCBCdW1wUmFuZ2VDYWNoZSYpOwogICAgIHZvaWQgZGVyZWZNZWRpdW1MaW5lKHN0ZDo6
bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mLCBNZWRpdW1MaW5lKik7CiAKICAgICB2b2lkKiBhbGxv
Y2F0ZUxhcmdlKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mLCBzaXplX3QpOwpAQCAtMTA4
LDExICsxMDksMTEgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8UmFuZ2U+IG1feExhcmdlT2JqZWN0
czsKIAogICAgIGJvb2wgbV9pc0FsbG9jYXRpbmdQYWdlczsKKyAgICBBc3luY1Rhc2s8SGVhcCwg
ZGVjbHR5cGUoJkhlYXA6OmNvbmN1cnJlbnRTY2F2ZW5nZSk+IG1fc2NhdmVuZ2VyOwogCiAgICAg
RW52aXJvbm1lbnQgbV9lbnZpcm9ubWVudDsKIAogICAgIFZNSGVhcCBtX3ZtSGVhcDsKLSAgICBB
c3luY1Rhc2s8SGVhcCwgZGVjbHR5cGUoJkhlYXA6OmNvbmN1cnJlbnRTY2F2ZW5nZSk+IG1fc2Nh
dmVuZ2VyOwogfTsKIAogaW5saW5lIHZvaWQgSGVhcDo6ZGVyZWZTbWFsbExpbmUoc3RkOjpsb2Nr
X2d1YXJkPFN0YXRpY011dGV4PiYgbG9jaywgU21hbGxMaW5lKiBsaW5lKQpJbmRleDogU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9TaXplcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvU2l6ZXMuaAkocmV2aXNpb24gMTkxMTUxKQorKysgU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9TaXplcy5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw3ICs5Myw3IEBAIG5hbWVzcGFjZSBTaXpl
cyB7CiAgICAgc3RhdGljIGNvbnN0IHVpbnRwdHJfdCBzbWFsbE9yTWVkaXVtU21hbGxUeXBlTWFz
ayA9IHNtYWxsVHlwZSBeIG1lZGl1bVR5cGU7IC8vIE9ubHkgdmFsaWQgaWYgb2JqZWN0IGlzIGtu
b3duIHRvIGJlIHNtYWxsIG9yIG1lZGl1bS4KIAogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgZGVh
bGxvY2F0b3JMb2dDYXBhY2l0eSA9IDI1NjsKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGJ1bXBS
YW5nZUNhY2hlQ2FwYWNpdHkgPSB2bVBhZ2VTaXplIC8gc21hbGxMaW5lU2l6ZSAvIDI7CisgICAg
c3RhdGljIGNvbnN0IHNpemVfdCBidW1wUmFuZ2VDYWNoZUNhcGFjaXR5ID0gMzsKICAgICAKICAg
ICBzdGF0aWMgY29uc3Qgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyBzY2F2ZW5nZVNsZWVwRHVy
YXRpb24gPSBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzKDUxMik7CiAK
</data>
<flag name="review"
          id="288407"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>