<?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>180248</bug_id>
          
          <creation_ts>2017-12-01 08:30:22 -0800</creation_ts>
          <short_desc>Get rid of UnconditionalFinalizers and WeakReferenceHarvesters</short_desc>
          <delta_ts>2018-06-06 19:32:48 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>180456</dependson>
    
    <dependson>180636</dependson>
    
    <dependson>186102</dependson>
          <blocked>179876</blocked>
    
    <blocked>180250</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1376814</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-12-01 08:30:22 -0800</bug_when>
    <thetext>Adding them to the set of things the GC tracks requires global synchronization that limits parallelism.  Also, types that use those APIs tend to use them unconditionally, so we could just put the type into a subspace and iterate the subspace during finalization (to emulate UnconditionalFinalizer) and during constraint solving (to emulate WeakReferenceHarvester).

The outcome of this change should be an increase in GC throughput.  It might even improve splay perf.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379980</commentid>
    <comment_count>1</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-12-09 11:46:49 -0800</bug_when>
    <thetext>So far, this isn&apos;t yielding any speed-ups.  It&apos;s also not yielding slow-downs either.  So maybe the lock contention measurements that I made previously were showing the kind of contention that isn&apos;t actually a perf problem.

But this is a clean way of introducing IsoSubspaces.  In the world of IsoSubspaces for everything, we shouldn&apos;t need UnconditionalFinalizers or WeakReferenceHarvesters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379986</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-09 12:05:22 -0800</bug_when>
    <thetext>Great, now, I have WeakMap/WeakSet redesign patch in my hand[1]. I&apos;ll apply your change to my new WeakMap/WeakSet too :)

[1]: https://bugs.webkit.org/show_bug.cgi?id=179929</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1380010</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-12-09 14:13:25 -0800</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #2)
&gt; Great, now, I have WeakMap/WeakSet redesign patch in my hand[1]. I&apos;ll apply
&gt; your change to my new WeakMap/WeakSet too :)
&gt; 
&gt; [1]: https://bugs.webkit.org/show_bug.cgi?id=179929

Note that I’m about to change how unconditional finalization works again. The current approach is not a good fit for InferredValue. In the new API, you’ll be able to opt cells into and out of being part of the GC’s unconditional finalizes set.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1428472</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-05-30 09:26:19 -0700</bug_when>
    <thetext>The fancy thing is that now JSWeakMap is the last user of WeakReferenceHarvester. (JSWeakSet does not use it since WeakSet does not need to harvest weak references. All the keys are weak.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429650</commentid>
    <comment_count>5</comment_count>
      <attachid>341864</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-06-03 08:00:04 -0700</bug_when>
    <thetext>Created attachment 341864
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429783</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-06-04 00:42:48 -0700</bug_when>
    <thetext>Committed r232463: &lt;https://trac.webkit.org/changeset/232463&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429784</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-06-04 00:43:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/40764004&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429818</commentid>
    <comment_count>8</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2018-06-04 08:17:09 -0700</bug_when>
    <thetext>Nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1430675</commentid>
    <comment_count>9</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-06-06 19:32:48 -0700</bug_when>
    <thetext>(In reply to Keith Miller from comment #8)
&gt; Nice!

Yay!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341864</attachid>
            <date>2018-06-03 08:00:04 -0700</date>
            <delta_ts>2018-06-03 11:43:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180248-20180604000003.patch</filename>
            <type>text/plain</type>
            <size>8374</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyNDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
MzdkN2RlMjY1MmUzMmE4NTY1MmFmYmQ4ZmExYmJiNDEzZDIxMTQ5Li5kZmRkYWYxYmNkN2Q4MGIx
N2IyYjdkMDY5ODk4MzM4Yjg0NzY3ZmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxOC0wNi0wMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBHZXQgcmlkIG9mIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzIGFuZCBX
ZWFrUmVmZXJlbmNlSGFydmVzdGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTgwMjQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQXMgYSBmaW5hbCBzdGVwLCB0aGlzIHBhdGNoIHJlbW92ZXMgTGlzdGFi
bGVIYW5kbGVyIGZyb20gSlNDLgorICAgICAgICBOb2JvZHkgdXNlcyBVbmNvbmRpdGlvbmFsRmlu
YWxpemVycyBhbmQgV2Vha1JlZmVyZW5jZUhhcnZlc3RlcnMgbm93LgorCisgICAgICAgICogSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBoZWFwL0hl
YXAuaDoKKyAgICAgICAgKiBoZWFwL0xpc3RhYmxlSGFuZGxlci5oOiBSZW1vdmVkLgorCiAyMDE4
LTA2LTAyICBDYWlvIExpbWEgIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KIAogICAgICAgICBbRVNO
ZXh0XVtCaWdJbnRdIEltcGxlbWVudCBzdXBwb3J0IGZvciBhZGRpdGlvbiBvcGVyYXRpb25zCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDYzZTVhMTRmNmEzNThlODMxZGRlMDIwODc4
YWRhYWIwYzk4NzIyYmQuLjJiNWIzOTczZWNmNjU0OWRlMTY4Yjc2NDUxMjE0NGFiODdiYTFlYjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yOTUsNyArMjk1LDYgQEAKIAkJMEY0
MjZBNDgxNDYwQ0JCMzAwMTMxRjhGIC8qIFZhbHVlUmVjb3ZlcnkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDI2QTQ1MTQ2MENCQUIwMDEzMUY4RiAv
KiBWYWx1ZVJlY292ZXJ5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEY0MjZBNDkxNDYwQ0JCNzAwMTMxRjhGIC8qIFZpcnR1YWxSZWdpc3Rlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0MjZBNDYx
NDYwQ0JBQjAwMTMxRjhGIC8qIFZpcnR1YWxSZWdpc3Rlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDI2QTRCMTQ2MENENkUwMDEzMUY4RiAv
KiBEYXRhRm9ybWF0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjQyNkE0QTE0NjBDRDZCMDAxMzFGOEYgLyogRGF0YUZvcm1hdC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTBGNDMxNzM4MTQ2QkFDNjkw
MDdFMzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDMxNzM2MTQ2QkFDNjUwMDdFMzg5MCAvKiBMaXN0YWJsZUhh
bmRsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwRjQ1NzAzOTFCRTQ0QzkxMDA2MkE2MjkgLyogQWlyRWxpbWluYXRlRGVhZENvZGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDU3MDM3MUJFNDRD
OTEwMDYyQTYyOSAvKiBBaXJFbGltaW5hdGVEZWFkQ29kZS5oICovOyB9OwogCQkwRjQ1NzAzRDFC
RTQ1RjBBMDA2MkE2MjkgLyogQWlyUmVwb3J0VXNlZFJlZ2lzdGVycy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NTcwM0IxQkU0NUYwQTAwNjJBNjI5
IC8qIEFpclJlcG9ydFVzZWRSZWdpc3RlcnMuaCAqLzsgfTsKIAkJMEY0NTcwNDExQkU1ODRDQTAw
NjJBNjI5IC8qIEIzVGltaW5nU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNDU3MDNGMUJFNTg0Q0EwMDYyQTYyOSAvKiBCM1RpbWluZ1Njb3Bl
LmggKi87IH07CkBAIC0yMjg2LDcgKzIyODUsNiBAQAogCQkwRjQyNkE0NjE0NjBDQkFCMDAxMzFG
OEYgLyogVmlydHVhbFJlZ2lzdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFZpcnR1YWxSZWdpc3Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQyNkE0
QTE0NjBDRDZCMDAxMzFGOEYgLyogRGF0YUZvcm1hdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBEYXRhRm9ybWF0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
NDJCM0MwMjAxRUI1MDkwMDM1NzAzMSAvKiBBbGxvY2F0b3IuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQWxsb2NhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMEY0MzE3MzYxNDZCQUM2NTAwN0UzODkwIC8qIExpc3RhYmxlSGFuZGxlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMaXN0YWJsZUhhbmRsZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0NTcwMzYxQkU0NEM5MTAwNjJBNjI5IC8qIEFpckVs
aW1pbmF0ZURlYWRDb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IEFpckVsaW1pbmF0ZURlYWRDb2RlLmNwcDsgcGF0aCA9IGIzL2Fpci9BaXJFbGltaW5hdGVEZWFk
Q29kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDU3MDM3MUJFNDRDOTEw
MDYyQTYyOSAvKiBBaXJFbGltaW5hdGVEZWFkQ29kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBBaXJFbGltaW5hdGVEZWFkQ29kZS5oOyBwYXRoID0gYjMvYWlyL0FpckVsaW1p
bmF0ZURlYWRDb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDU3MDNBMUJF
NDVGMEEwMDYyQTYyOSAvKiBBaXJSZXBvcnRVc2VkUmVnaXN0ZXJzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFpclJlcG9ydFVzZWRSZWdpc3RlcnMuY3BwOyBwYXRo
ID0gYjMvYWlyL0FpclJlcG9ydFVzZWRSZWdpc3RlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNTc1Myw3ICs1NzUxLDYgQEAKIAkJCQkwRjc2NkQyQTE1QThDQzM0MDA4RjM2
M0UgLyogSklUU3R1YlJvdXRpbmVTZXQuaCAqLywKIAkJCQkwRjA3MEE0NTFENTQzQTg5MDA2RTcy
MzIgLyogTGFyZ2VBbGxvY2F0aW9uLmNwcCAqLywKIAkJCQkwRjA3MEE0NjFENTQzQTg5MDA2RTcy
MzIgLyogTGFyZ2VBbGxvY2F0aW9uLmggKi8sCi0JCQkJMEY0MzE3MzYxNDZCQUM2NTAwN0UzODkw
IC8qIExpc3RhYmxlSGFuZGxlci5oICovLAogCQkJCTBGNzVBMDU5MjAwRDI1RjAwMDM4RTJDRiAv
KiBMb2NhbEFsbG9jYXRvci5jcHAgKi8sCiAJCQkJMEY3NUEwNTcyMDBEMjVGMDAwMzhFMkNGIC8q
IExvY2FsQWxsb2NhdG9yLmggKi8sCiAJCQkJMEY3NUEwNUEyMDBEMjVGMDAwMzhFMkNGIC8qIExv
Y2FsQWxsb2NhdG9ySW5saW5lcy5oICovLApAQCAtOTIyNyw3ICs5MjI0LDYgQEAKIAkJCQlCQzE4
QzQzMTBFMTZGNUNEMDBCMzQ0NjAgLyogTGV4ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThD
NTJFMEUxNkZDRTEwMEIzNDQ2MCAvKiBMZXhlci5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2
RDNCM0MzMTAxNTlEN0YwMDI4NjVFNyAvKiBMaW5rQnVmZmVyLmggaW4gSGVhZGVycyAqLywKLQkJ
CQkwRjQzMTczODE0NkJBQzY5MDA3RTM4OTAgLyogTGlzdGFibGVIYW5kbGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBN0UyRUE2QjBGQjQ2MENGMDA2MDFGMDYgLyogTGl0ZXJhbFBhcnNlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNzBERTlBMDkxQkU3RDY5RTAwNUQ4OUQ5IC8qIExMSW50QXNzZW1i
bHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEZDNDVBMTRCRDE1RjUwMEI4MTE1NCAvKiBMTElu
dENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgK
aW5kZXggM2VmZDIwMTg3MTM1MWJmNWQxZmFmY2FiZGExMTJiZjhkMjc0Njk4OS4uYzFlNjMxNDM2
ZGFiNWE4OWU4Y2IwMzFhY2ZkYjcxNjc3Y2Q3YTM3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuaApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIkhhbmRsZVNldC5oIgogI2luY2x1ZGUg
IkhlYXBGaW5hbGl6ZXJDYWxsYmFjay5oIgogI2luY2x1ZGUgIkhlYXBPYnNlcnZlci5oIgotI2lu
Y2x1ZGUgIkxpc3RhYmxlSGFuZGxlci5oIgogI2luY2x1ZGUgIk1hcmtlZEJsb2NrLmgiCiAjaW5j
bHVkZSAiTWFya2VkU3BhY2UuaCIKICNpbmNsdWRlICJNdXRhdG9yU3RhdGUuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xpc3RhYmxlSGFuZGxlci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTGlzdGFibGVIYW5kbGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDIzMjA1YzE1OGNlOTA5ZTkyN2YxNmEzNTMxY2EwMjY3MGQzZDhiM2QuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTGlzdGFibGVIYW5kbGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMTQg
KzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGVzc2VyIEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwot
ICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhl
IEZyZWUgU29mdHdhcmUKLSAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKLSAqCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpbmNsdWRlIDxzdGRpbnQuaD4KLSNpbmNsdWRlIDx3dGYvTG9jay5oPgot
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xhc3Mg
SGVhcDsKLWNsYXNzIFNsb3RWaXNpdG9yOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY2xhc3Mg
TGlzdGFibGVIYW5kbGVyIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShMaXN0YWJsZUhhbmRs
ZXIpOwotCi1wdWJsaWM6ICAgIAotICAgIGJvb2wgaXNPbkxpc3QoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuIG1fbmV4dEFuZEZsYWcgJiAxOwotICAgIH0KLSAgICAKLXByb3RlY3RlZDoK
LSAgICBMaXN0YWJsZUhhbmRsZXIoKQotICAgICAgICA6IG1fbmV4dEFuZEZsYWcoMCkKLSAgICB7
Ci0gICAgfQotICAgIAotICAgIHZpcnR1YWwgfkxpc3RhYmxlSGFuZGxlcigpIHsgfQotICAgIAot
ICAgIFQqIG5leHQoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8VCo+KG1fbmV4dEFuZEZsYWcgJiB+MSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIC8vIEFs
bG93IHRoZXNlIGNsYXNzZXMgdG8gdXNlIExpc3RhYmxlSGFuZGxlcjo6TGlzdC4KLSAgICBmcmll
bmQgY2xhc3MgSGVhcDsKLSAgICBmcmllbmQgY2xhc3MgU2xvdFZpc2l0b3I7Ci0gICAgCi0gICAg
Y2xhc3MgTGlzdCB7Ci0gICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKExpc3QpOwotICAgIHB1
YmxpYzoKLSAgICAgICAgTGlzdCgpCi0gICAgICAgICAgICA6IG1fZmlyc3QoMCkKLSAgICAgICAg
ewotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB2b2lkIGFkZFRocmVhZFNhZmUoVCogaGFu
ZGxlcikKLSAgICAgICAgewotICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoJm1fbG9jayk7
Ci0gICAgICAgICAgICBhZGROb3RUaHJlYWRTYWZlKGhhbmRsZXIpOwotICAgICAgICB9Ci0gICAg
ICAgIAotICAgICAgICBib29sIGhhc05leHQoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gISFtX2ZpcnN0OwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBUKiBoZWFkKCkKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1fZmlyc3Q7Ci0gICAgICAgIH0KLSAgICAgICAg
Ci0gICAgICAgIFQqIHJlbW92ZU5leHQoKQotICAgICAgICB7Ci0gICAgICAgICAgICBUKiBjdXJy
ZW50ID0gbV9maXJzdDsKLSAgICAgICAgICAgIFQqIG5leHQgPSBjdXJyZW50LT5uZXh0KCk7Ci0g
ICAgICAgICAgICBjdXJyZW50LT5tX25leHRBbmRGbGFnID0gMDsKLSAgICAgICAgICAgIG1fZmly
c3QgPSBuZXh0OwotICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnQ7Ci0gICAgICAgIH0KLSAgICAg
ICAgCi0gICAgICAgIHZvaWQgcmVtb3ZlQWxsKCkKLSAgICAgICAgewotICAgICAgICAgICAgd2hp
bGUgKGhhc05leHQoKSkKLSAgICAgICAgICAgICAgICByZW1vdmVOZXh0KCk7Ci0gICAgICAgIH0K
LSAgICAgICAgCi0gICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBhZGROb3RUaHJlYWRTYWZlKFQq
IGhhbmRsZXIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChoYW5kbGVyLT5tX25leHRBbmRG
bGFnICYgMSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBoYW5kbGVyLT5t
X25leHRBbmRGbGFnID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG1fZmlyc3QpIHwgMTsK
LSAgICAgICAgICAgIG1fZmlyc3QgPSBoYW5kbGVyOwotICAgICAgICB9Ci0gICAgICAgIAotICAg
ICAgICBMb2NrIG1fbG9jazsKLSAgICAgICAgVCogbV9maXJzdDsKLSAgICB9OwotICAgIAotICAg
IHVpbnRwdHJfdCBtX25leHRBbmRGbGFnOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCg==
</data>
<flag name="review"
          id="360023"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>