<?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>65234</bug_id>
          
          <creation_ts>2011-07-26 23:24:34 -0700</creation_ts>
          <short_desc>DFG graph has no notion of double prediction</short_desc>
          <delta_ts>2011-07-27 20:25:36 -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>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>barraclough</cc>
    
    <cc>fpizlo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>442750</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-07-26 23:24:34 -0700</bug_when>
    <thetext>The DFG graph has notions of Int32, cell, and array predictions, but no notion of double prediction.  Furthermore, it has no notion of the least-upper-bound of predictions, or of distinguishing between a top prediction (where we know that the node can have every type because we&apos;ve got confirmed sightings of assignments of all of the different types) and a bottom prediction (we have no information pointing in the direction of any particular type).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442754</commentid>
    <comment_count>1</comment_count>
      <attachid>102097</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-07-26 23:46:35 -0700</bug_when>
    <thetext>Created attachment 102097
the patch

This is performance-neutral, but shows sights of slight speed-ups in Kraken.  It&apos;s meant as a stepping stone for other optimizations which would otherwise cause slow-downs due to overzealous int speculation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443290</commentid>
    <comment_count>2</comment_count>
      <attachid>102097</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-27 20:25:32 -0700</bug_when>
    <thetext>Comment on attachment 102097
the patch

Clearing flags on attachment: 102097

Committed r91894: &lt;http://trac.webkit.org/changeset/91894&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443291</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-27 20:25:36 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102097</attachid>
            <date>2011-07-26 23:46:35 -0700</date>
            <delta_ts>2011-07-27 20:25:32 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>doublepredict_patch_1.diff</filename>
            <type>text/plain</type>
            <size>10948</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTE4MjQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAK
KzIwMTEtMDctMjYgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBE
RkcgZ3JhcGggaGFzIG5vIG5vdGlvbiBvZiBkb3VibGUgcHJlZGljdGlvbi4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1MjM0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBBZGRlZCB0aGUgbm90
aW9uIG9mIFByZWRpY3REb3VibGUsIGFuZCBQcmVkaWN0TnVtYmVyLCB3aGljaCBpcyB0aGUgbGVh
c3QKKyAgICAgICAgdXBwZXIgYm91bmQgb2YgUHJlZGljdEludDMyIGFuZCBQcmVkaWN0RG91Ymxl
LiAgTGVhc3QgdXBwZXIgYm91bmQgaXMKKyAgICAgICAgZGVmaW5lZCBhcyB0aGUgYml0d2lzZS1v
ciBvZiB0d28gcHJlZGljdGlvbnMuICBCb3R0b20gaXMgZGVmaW5lZCBhcyAwLAorICAgICAgICBh
bmQgVG9wIGlzIGRlZmluZWQgYXMgYWxsIGJpdHMgYmVpbmcgc2V0LiAgQWRkZWQgdGhlIGFiaWxp
dHkgdG8gZXhwbGljaXRseQorICAgICAgICBkaXN0aW5ndWlzaCBiZXR3ZWVuIGEgbm9kZSBoYXZp
bmcgaGFkIGEgcHJlZGljdGlvbiBhc3NvY2lhdGVkIHdpdGggaXQsCisgICAgICAgIGFuZCB0aGF0
IHByZWRpY3Rpb24gc3RpbGwgYmVpbmcgdmFsaWQgKGkuZS4gbm8gY29uZmxpY3RpbmcgcHJlZGlj
dGlvbnMKKyAgICAgICAgaGF2ZSBhbHNvIGJlZW4gYWRkZWQpLiAgVXNlZCB0aGlzIHRvIGd1YXJk
IHRoZSBzcGVjdWxhdGl2ZSBKSVQgZnJvbQorICAgICAgICBzcGVjdWxhdGluZyBJbnQzMiBpbiBj
YXNlcyB3aGVyZSB0aGUgZ3JhcGgga25vd3MgdGhhdCB0aGUgdmFsdWUgaXMKKyAgICAgICAgZG91
YmxlLCB3aGljaCBjdXJyZW50bHkgb25seSBoYXBwZW5zIGZvciBHZXRMb2NhbCBub2RlcyBvbiBh
cmd1bWVudHMKKyAgICAgICAgd2hpY2ggd2VyZSBkb3VibGUgYXQgY29tcGlsZS10aW1lLgorCisg
ICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6cHJl
ZGljdEFyZ3VtZW50VHlwZXMpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAo
SlNDOjpERkc6OmlzQ2VsbFByZWRpY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6OmlzQXJyYXlQ
cmVkaWN0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjppc0ludDMyUHJlZGljdGlvbik6CisgICAg
ICAgIChKU0M6OkRGRzo6aXNEb3VibGVQcmVkaWN0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpp
c051bWJlclByZWRpY3Rpb24pOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjaGVja0FyZ3VtZW50VHlwZXMpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjppbml0aWFsaXplVmFyaWFibGVUeXBlcyk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmlzUmVnaXN0ZXJEYXRhRm9ybWF0RG91YmxlKToKKwogMjAxMS0wNy0yNiAgTWFy
ayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgogCiAgICAgICAgIHJlZHVjZSBh
bmQgcmVkdWNlUmlnaHQgYmluZCBjYWxsYmFjaydzIHRoaXMgdG8gbnVsbCByYXRoZXIgdGhhbiB1
bmRlZmluZWQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZp
c2lvbiA5MTgyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xODEsOCArMTgxLDExIEBAIHZvaWQgR3JhcGg6OnByZWRpY3RBcmd1
bWVudFR5cGVzKEV4ZWNTdGEKICAgICBzaXplX3QgbnVtYmVyT2ZBcmd1bWVudHMgPSBzdGQ6Om1p
bihleGVjLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpLCBtX2FyZ3VtZW50UHJlZGljdGlv
bnMuc2l6ZSgpKTsKIAogICAgIGZvciAoc2l6ZV90IGFyZyA9IDE7IGFyZyA8IG51bWJlck9mQXJn
dW1lbnRzOyArK2FyZykgewotICAgICAgICBpZiAoZXhlYy0+YXJndW1lbnQoYXJnIC0gMSkuaXNJ
bnQzMigpKQorICAgICAgICBKU1ZhbHVlIGFyZ3VtZW50VmFsdWUgPSBleGVjLT5hcmd1bWVudChh
cmcgLSAxKTsKKyAgICAgICAgaWYgKGFyZ3VtZW50VmFsdWUuaXNJbnQzMigpKQogICAgICAgICAg
ICAgbV9hcmd1bWVudFByZWRpY3Rpb25zW2FyZ10ubV92YWx1ZSB8PSBQcmVkaWN0SW50MzI7Cisg
ICAgICAgIGVsc2UgaWYgKGFyZ3VtZW50VmFsdWUuaXNEb3VibGUoKSkKKyAgICAgICAgICAgIG1f
YXJndW1lbnRQcmVkaWN0aW9uc1thcmddLm1fdmFsdWUgfD0gUHJlZGljdERvdWJsZTsKICAgICB9
CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDkx
ODIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00NCwxMCArNDQsMzcgQEAgbmFtZXNwYWNlIERGRyB7CiBpbmxpbmUgYm9vbCBvcGVy
YW5kSXNBcmd1bWVudChpbnQgb3BlcmFuZCkgeyByZXR1cm4gb3BlcmFuZCA8IDA7IH0KIAogdHlw
ZWRlZiB1aW50OF90IFByZWRpY3RlZFR5cGU7Ci1zdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQ
cmVkaWN0Tm9uZSAgPSAwOwotc3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdENlbGwg
ID0gMHgwMTsKLXN0YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBlIFByZWRpY3RBcnJheSA9IDB4MDM7
Ci1zdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0SW50MzIgPSAweDA0Oworc3RhdGlj
IGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdE5vbmUgICA9IDA7CitzdGF0aWMgY29uc3QgUHJl
ZGljdGVkVHlwZSBQcmVkaWN0Q2VsbCAgID0gMHgwMTsKK3N0YXRpYyBjb25zdCBQcmVkaWN0ZWRU
eXBlIFByZWRpY3RBcnJheSAgPSAweDAzOworc3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJl
ZGljdEludDMyICA9IDB4MDQ7CitzdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0RG91
YmxlID0gMHgwODsKK3N0YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBlIFByZWRpY3ROdW1iZXIgPSAw
eDBjOworCitpbmxpbmUgYm9vbCBpc0NlbGxQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUp
Cit7CisgICAgcmV0dXJuICh2YWx1ZSAmIFByZWRpY3RDZWxsKSA9PSBQcmVkaWN0Q2VsbCAmJiAh
KHZhbHVlICYgflByZWRpY3RBcnJheSk7Cit9CisKK2lubGluZSBib29sIGlzQXJyYXlQcmVkaWN0
aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCit7CisgICAgcmV0dXJuIHZhbHVlID09IFByZWRpY3RB
cnJheTsKK30KKworaW5saW5lIGJvb2wgaXNJbnQzMlByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2
YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUgPT0gUHJlZGljdEludDMyOworfQorCitpbmxpbmUg
Ym9vbCBpc0RvdWJsZVByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1
cm4gdmFsdWUgPT0gUHJlZGljdERvdWJsZTsKK30KKworaW5saW5lIGJvb2wgaXNOdW1iZXJQcmVk
aWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCit7CisgICAgcmV0dXJuICEhKHZhbHVlICYgUHJl
ZGljdE51bWJlcikgJiYgISh2YWx1ZSAmIH5QcmVkaWN0TnVtYmVyKTsKK30KIAogc3RydWN0IFBy
ZWRpY3Rpb25TbG90IHsKIHB1YmxpYzoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiA5MTgyMikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01MzcsNyArNTM3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2Rl
KQogICAgIGNhc2UgR2V0TG9jYWw6IHsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlz
KTsKICAgICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uID0gbV9qaXQuZ3JhcGgoKS5nZXRQ
cmVkaWN0aW9uKG5vZGUubG9jYWwoKSk7Ci0gICAgICAgIGlmIChwcmVkaWN0aW9uID09IFByZWRp
Y3RJbnQzMikgeworICAgICAgICBpZiAoaXNJbnQzMlByZWRpY3Rpb24ocHJlZGljdGlvbikpIHsK
ICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihub2RlLmxv
Y2FsKCkpLCByZXN1bHQuZ3ByKCkpOwogCiAgICAgICAgICAgICAvLyBMaWtlIGludGVnZXJSZXN1
bHQsIGJ1dCBkb24ndCB1c2VDaGlsZHJlbiAtIG91ciBjaGlsZHJlbiBhcmUgcGhpIG5vZGVzLApA
QCAtNTUyLDM0ICs1NTIsMjcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBu
b2RlKQogICAgICAgICAgICAgLy8gYW5kIGRvbid0IHJlcHJlc2VudCB2YWx1ZXMgd2l0aGluIHRo
aXMgZGF0YWZsb3cgd2l0aCB2aXJ0dWFsIHJlZ2lzdGVycy4KICAgICAgICAgICAgIFZpcnR1YWxS
ZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBub2RlLnZpcnR1YWxSZWdpc3RlcigpOwogICAgICAg
ICAgICAgbV9ncHJzLnJldGFpbihyZXN1bHQuZ3ByKCksIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxP
cmRlckpTKTsKLSAgICAgICAgICAgIG1fZ2VuZXJhdGlvbkluZm9bdmlydHVhbFJlZ2lzdGVyXS5p
bml0SlNWYWx1ZShtX2NvbXBpbGVJbmRleCwgbm9kZS5yZWZDb3VudCgpLCByZXN1bHQuZ3ByKCks
IChwcmVkaWN0aW9uID09IFByZWRpY3RBcnJheSkgPyBEYXRhRm9ybWF0SlNDZWxsIDogRGF0YUZv
cm1hdEpTKTsKKyAgICAgICAgICAgIG1fZ2VuZXJhdGlvbkluZm9bdmlydHVhbFJlZ2lzdGVyXS5p
bml0SlNWYWx1ZShtX2NvbXBpbGVJbmRleCwgbm9kZS5yZWZDb3VudCgpLCByZXN1bHQuZ3ByKCks
IGlzQXJyYXlQcmVkaWN0aW9uKHByZWRpY3Rpb24pID8gRGF0YUZvcm1hdEpTQ2VsbCA6IERhdGFG
b3JtYXRKUyk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgY2FzZSBT
ZXRMb2NhbDogewotICAgICAgICBzd2l0Y2ggKG1faml0LmdyYXBoKCkuZ2V0UHJlZGljdGlvbihu
b2RlLmxvY2FsKCkpKSB7Ci0gICAgICAgIGNhc2UgUHJlZGljdEludDMyOiB7CisgICAgICAgIFBy
ZWRpY3RlZFR5cGUgcHJlZGljdGVkVHlwZSA9IG1faml0LmdyYXBoKCkuZ2V0UHJlZGljdGlvbihu
b2RlLmxvY2FsKCkpOworICAgICAgICBpZiAoaXNJbnQzMlByZWRpY3Rpb24ocHJlZGljdGVkVHlw
ZSkpIHsKICAgICAgICAgICAgIFNwZWN1bGF0ZUludGVnZXJPcGVyYW5kIHZhbHVlKHRoaXMsIG5v
ZGUuY2hpbGQxKCkpOwogICAgICAgICAgICAgbV9qaXQuc3RvcmUzMih2YWx1ZS5ncHIoKSwgSklU
Q29tcGlsZXI6OnBheWxvYWRGb3Iobm9kZS5sb2NhbCgpKSk7CiAgICAgICAgICAgICBub1Jlc3Vs
dChtX2NvbXBpbGVJbmRleCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAg
ICBjYXNlIFByZWRpY3RBcnJheTogeworICAgICAgICB9IGVsc2UgaWYgKGlzQXJyYXlQcmVkaWN0
aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBj
ZWxsKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICAgICAgR1BSUmVnIGNlbGxHUFIgPSBj
ZWxsLmdwcigpOwogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhtX2ppdC5icmFuY2hQdHIo
TWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjZWxsR1BS
KSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0Fy
cmF5VlB0cikpKTsKICAgICAgICAgICAgIG1faml0LnN0b3JlUHRyKGNlbGxHUFIsIEpJVENvbXBp
bGVyOjphZGRyZXNzRm9yKG5vZGUubG9jYWwoKSkpOwogICAgICAgICAgICAgbm9SZXN1bHQobV9j
b21waWxlSW5kZXgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICBk
ZWZhdWx0OiB7CisgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2
YWx1ZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgICAgIG1faml0LnN0b3JlUHRyKHZh
bHVlLmdwcigpLCBKSVRDb21waWxlcjo6YWRkcmVzc0Zvcihub2RlLmxvY2FsKCkpKTsKICAgICAg
ICAgICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtOTE4LDcgKzkxMSw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgLy8g
Q2hlY2sgdGhhdCBiYXNlIGlzIGFuIGFycmF5LCBhbmQgdGhhdCBwcm9wZXJ0eSBpcyBjb250YWlu
ZWQgd2l0aGluIG1fdmVjdG9yICg8IG1fdmVjdG9yTGVuZ3RoKS4KICAgICAgICAgLy8gSWYgd2Ug
aGF2ZSBwcmVkaWN0ZWQgdGhlIGJhc2UgdG8gYmUgdHlwZSBhcnJheSwgd2UgY2FuIHNraXAgdGhl
IGNoZWNrLgogICAgICAgICBOb2RlJiBiYXNlTm9kZSA9IG1faml0LmdyYXBoKClbbm9kZS5jaGls
ZDEoKV07Ci0gICAgICAgIGlmIChiYXNlTm9kZS5vcCAhPSBHZXRMb2NhbCB8fCBtX2ppdC5ncmFw
aCgpLmdldFByZWRpY3Rpb24oYmFzZU5vZGUubG9jYWwoKSkgIT0gUHJlZGljdEFycmF5KQorICAg
ICAgICBpZiAoYmFzZU5vZGUub3AgIT0gR2V0TG9jYWwgfHwgIWlzQXJyYXlQcmVkaWN0aW9uKG1f
aml0LmdyYXBoKCkuZ2V0UHJlZGljdGlvbihiYXNlTm9kZS5sb2NhbCgpKSkpCiAgICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1
YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzQXJyYXlWUHRyKSkpOwogICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1
YWwsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0FycmF5
Ojp2ZWN0b3JMZW5ndGhPZmZzZXQoKSkpKTsKIApAQCAtOTUzLDcgKzk0Niw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgLy8gQ2hlY2sgdGhhdCBi
YXNlIGlzIGFuIGFycmF5LCBhbmQgdGhhdCBwcm9wZXJ0eSBpcyBjb250YWluZWQgd2l0aGluIG1f
dmVjdG9yICg8IG1fdmVjdG9yTGVuZ3RoKS4KICAgICAgICAgLy8gSWYgd2UgaGF2ZSBwcmVkaWN0
ZWQgdGhlIGJhc2UgdG8gYmUgdHlwZSBhcnJheSwgd2UgY2FuIHNraXAgdGhlIGNoZWNrLgogICAg
ICAgICBOb2RlJiBiYXNlTm9kZSA9IG1faml0LmdyYXBoKClbbm9kZS5jaGlsZDEoKV07Ci0gICAg
ICAgIGlmIChiYXNlTm9kZS5vcCAhPSBHZXRMb2NhbCB8fCBtX2ppdC5ncmFwaCgpLmdldFByZWRp
Y3Rpb24oYmFzZU5vZGUubG9jYWwoKSkgIT0gUHJlZGljdEFycmF5KQorICAgICAgICBpZiAoYmFz
ZU5vZGUub3AgIT0gR2V0TG9jYWwgfHwgaXNBcnJheVByZWRpY3Rpb24obV9qaXQuZ3JhcGgoKS5n
ZXRQcmVkaWN0aW9uKGJhc2VOb2RlLmxvY2FsKCkpKSkKICAgICAgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2sobV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoYmFzZVJlZyksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1f
aml0Lmdsb2JhbERhdGEoKS0+anNBcnJheVZQdHIpKSk7CiAKICAgICAgICAgYmFzZS51c2UoKTsK
QEAgLTEzMDUsMjEgKzEyOTgsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tBcmd1bWVu
dFR5cGVzKAogICAgIEFTU0VSVCghbV9jb21waWxlSW5kZXgpOwogICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgbV9qaXQuY29kZUJsb2NrKCktPm1fbnVtUGFyYW1ldGVyczsgKytpKSB7CiAgICAgICAg
IFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSAoVmlydHVhbFJlZ2lzdGVyKShtX2pp
dC5jb2RlQmxvY2soKS0+dGhpc1JlZ2lzdGVyKCkgKyBpKTsKLSAgICAgICAgc3dpdGNoIChtX2pp
dC5ncmFwaCgpLmdldFByZWRpY3Rpb24odmlydHVhbFJlZ2lzdGVyKSkgewotICAgICAgICBjYXNl
IFByZWRpY3RJbnQzMjoKKyAgICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0ZWRUeXBlID0gbV9q
aXQuZ3JhcGgoKS5nZXRQcmVkaWN0aW9uKHZpcnR1YWxSZWdpc3Rlcik7CisgICAgICAgIGlmIChp
c0ludDMyUHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkKICAgICAgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2sobV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpCZWxvdywgSklUQ29tcGlsZXI6
OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lz
dGVyKSk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFByZWRpY3RBcnJheTog
eworICAgICAgICBlbHNlIGlmIChpc0FycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewog
ICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAgICAgICBtX2ppdC5s
b2FkUHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3By
KCkpOwogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhtX2ppdC5icmFuY2hUZXN0UHRyKE1h
Y3JvQXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1wLmdwcigpLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0
ZXIpKTsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2sobV9qaXQuYnJhbmNoUHRyKE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSks
IE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+anNBcnJh
eVZQdHIpKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTEzMzIsNyAr
MTMxOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmluaXRpYWxpemVWYXJpYWJsZVQKIHsKICAg
ICBBU1NFUlQoIW1fY29tcGlsZUluZGV4KTsKICAgICBmb3IgKGludCB2YXIgPSAwOyB2YXIgPCBt
X2ppdC5jb2RlQmxvY2soKS0+bV9udW1WYXJzOyArK3ZhcikgewotICAgICAgICBpZiAobV9qaXQu
Z3JhcGgoKS5nZXRQcmVkaWN0aW9uKHZhcikgPT0gUHJlZGljdEludDMyKQorICAgICAgICBpZiAo
aXNJbnQzMlByZWRpY3Rpb24obV9qaXQuZ3JhcGgoKS5nZXRQcmVkaWN0aW9uKHZhcikpKQogICAg
ICAgICAgICAgbV9qaXQuc3RvcmVQdHIoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCBK
SVRDb21waWxlcjo6YWRkcmVzc0ZvcigoVmlydHVhbFJlZ2lzdGVyKXZhcikpOwogICAgIH0KIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJ
KHJldmlzaW9uIDkxODIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjIsNyArMTYyLDE0IEBAIHByaXZhdGU6CiAg
ICAgICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBub2RlLnZpcnR1YWxSZWdp
c3RlcigpOwogICAgICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IG1fZ2VuZXJhdGlvbkluZm9b
dmlydHVhbFJlZ2lzdGVyXTsKIAotICAgICAgICByZXR1cm4gKGluZm8ucmVnaXN0ZXJGb3JtYXQo
KSB8IERhdGFGb3JtYXRKUykgPT0gRGF0YUZvcm1hdEpTRG91YmxlOworICAgICAgICBpZiAoKGlu
Zm8ucmVnaXN0ZXJGb3JtYXQoKSB8IERhdGFGb3JtYXRKUykgPT0gRGF0YUZvcm1hdEpTRG91Ymxl
CisgICAgICAgICAgICB8fCAoaW5mby5zcGlsbEZvcm1hdCgpIHwgRGF0YUZvcm1hdEpTKSA9PSBE
YXRhRm9ybWF0SlNEb3VibGUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgCisg
ICAgICAgIGlmIChub2RlLm9wID09IEdldExvY2FsICYmIGlzRG91YmxlUHJlZGljdGlvbihtX2pp
dC5ncmFwaCgpLmdldFByZWRpY3Rpb24obm9kZS5sb2NhbCgpKSkpCisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCiAg
ICAgYm9vbCBzaG91bGRTcGVjdWxhdGVJbnRlZ2VyKE5vZGVJbmRleCBvcDEsIE5vZGVJbmRleCBv
cDIpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>