<?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>170817</bug_id>
          
          <creation_ts>2017-04-13 11:55:06 -0700</creation_ts>
          <short_desc>Air::RegLiveness should be constraint-based</short_desc>
          <delta_ts>2017-04-14 10:44:02 -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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>buildbot</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1297065</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-04-13 11:55:06 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297069</commentid>
    <comment_count>1</comment_count>
      <attachid>307008</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-04-13 11:56:49 -0700</bug_when>
    <thetext>Created attachment 307008
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297071</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-04-13 11:59:39 -0700</bug_when>
    <thetext>Attachment 307008 did not pass style-queue:


ERROR: Source/JavaScriptCore/b3/air/AirRegLiveness.h:105:  The parameter name &quot;liveness&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/air/AirRegLiveness.h:105:  The parameter name &quot;block&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 5 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>1297263</commentid>
    <comment_count>3</comment_count>
      <attachid>307008</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-04-13 19:01:05 -0700</bug_when>
    <thetext>Comment on attachment 307008
the patch

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

r=me

&gt; Source/JavaScriptCore/b3/air/AirAllocateRegistersAndStackByLinearScan.cpp:226
&gt; +                // FIXME: We can get this information from the liveness constraints. Except of
&gt; +                // course we want to separate the earlies of one instruction from the lates of
&gt; +                // the next.

Please make a bug and link here.

&gt; Source/JavaScriptCore/b3/air/AirAllocateRegistersAndStackByLinearScan.cpp:241
&gt; +                // FIXME: This could reg the register sets from somewhere else, like the
&gt; +                // liveness constraints. Except we want those constraints to be laid out like
&gt; +                // how they would have been by RegLiveness, since we want to separate the lates
&gt; +                // of one inst from the earlies of the next.

reg =&gt; get

Also, please make a bug and link it here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297405</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-04-14 09:44:34 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #3)
&gt; Comment on attachment 307008 [details]
&gt; the patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=307008&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/JavaScriptCore/b3/air/AirAllocateRegistersAndStackByLinearScan.cpp:226
&gt; &gt; +                // FIXME: We can get this information from the liveness constraints. Except of
&gt; &gt; +                // course we want to separate the earlies of one instruction from the lates of
&gt; &gt; +                // the next.
&gt; 
&gt; Please make a bug and link here.
&gt; 
&gt; &gt; Source/JavaScriptCore/b3/air/AirAllocateRegistersAndStackByLinearScan.cpp:241
&gt; &gt; +                // FIXME: This could reg the register sets from somewhere else, like the
&gt; &gt; +                // liveness constraints. Except we want those constraints to be laid out like
&gt; &gt; +                // how they would have been by RegLiveness, since we want to separate the lates
&gt; &gt; +                // of one inst from the earlies of the next.
&gt; 
&gt; reg =&gt; get
&gt; 
&gt; Also, please make a bug and link it here.

Filed https://bugs.webkit.org/show_bug.cgi?id=170850 for both of those and fixed the typo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297431</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-04-14 10:44:02 -0700</bug_when>
    <thetext>Landed in https://trac.webkit.org/changeset/215365/webkit</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307008</attachid>
            <date>2017-04-13 11:56:49 -0700</date>
            <delta_ts>2017-04-13 19:01:05 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>13084</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjE1MzI5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBA
CisyMDE3LTA0LTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QWlyOjpSZWdMaXZlbmVzcyBzaG91bGQgYmUgY29uc3RyYWludC1iYXNlZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwODE3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBQcmV2aW91c2x5LCBJ
IGNoYW5nZWQgdGhlIEFpciBsaXZlbmVzcyBhbmFseXNlcyBiYXNlZCBvbiBBaXI6OkxpdmVuZXNz
PD4gdG8gYmUKKyAgICAgICAgY29uc3RyYWludC1iYXNlZCBhbmQgdGhpcyB3YXMgYSBzaWduaWZp
Y2FudCBzcGVlZC11cC4gTm93IEknbSBhZGRpbmcgdGhlIHNhbWUKKyAgICAgICAgZnVuY3Rpb25h
bGl0eSB0byBSZWdMaXZlbmVzcy4KKyAgICAgICAgCisgICAgICAgIFRoaXMgaXMgYSAxJSBzcGVl
ZC11cCBvbiB3YXNtIEIzIC1PMSBjb21waWxlIHRpbWVzLgorICAgICAgICAKKyAgICAgICAgKiBi
My9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNBbmRTdGFja0J5TGluZWFyU2Nhbi5jcHA6CisgICAg
ICAgICogYjMvYWlyL0FpckxpdmVuZXNzQWRhcHRlci5oOgorICAgICAgICAoSlNDOjpCMzo6QWly
OjpMaXZlbmVzc0FkYXB0ZXI6OkxpdmVuZXNzQWRhcHRlcik6CisgICAgICAgIChKU0M6OkIzOjpB
aXI6OkxpdmVuZXNzQWRhcHRlcjo6cHJlcGFyZVRvQ29tcHV0ZSk6CisgICAgICAgIChKU0M6OkIz
OjpBaXI6OkxpdmVuZXNzQWRhcHRlcjo6YWN0aW9uc0F0KToKKyAgICAgICAgKiBiMy9haXIvQWly
UmVnTGl2ZW5lc3MuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpSZWdMaXZlbmVzczo6UmVn
TGl2ZW5lc3MpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpSZWdMaXZlbmVzczo6TG9jYWxDYWxj
Rm9yVW5pZmllZFRtcExpdmVuZXNzOjpMb2NhbENhbGNGb3JVbmlmaWVkVG1wTGl2ZW5lc3MpOgor
ICAgICAgICAoSlNDOjpCMzo6QWlyOjpSZWdMaXZlbmVzczo6TG9jYWxDYWxjRm9yVW5pZmllZFRt
cExpdmVuZXNzOjpleGVjdXRlKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6UmVnTGl2ZW5lc3M6
OkxvY2FsQ2FsYzo6ZXhlY3V0ZSk6IERlbGV0ZWQuCisgICAgICAgICogYjMvYWlyL0FpclJlZ0xp
dmVuZXNzLmg6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OlJlZ0xpdmVuZXNzOjpBY3Rpb25zOjpB
Y3Rpb25zKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6UmVnTGl2ZW5lc3M6OkxvY2FsQ2FsY0Jh
c2U6OkxvY2FsQ2FsY0Jhc2UpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpSZWdMaXZlbmVzczo6
TG9jYWxDYWxjQmFzZTo6bGl2ZSk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OlJlZ0xpdmVuZXNz
OjpMb2NhbENhbGNCYXNlOjppc0xpdmUpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpSZWdMaXZl
bmVzczo6TG9jYWxDYWxjOjpMb2NhbENhbGMpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpSZWdM
aXZlbmVzczo6TG9jYWxDYWxjOjpleGVjdXRlKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6UmVn
TGl2ZW5lc3M6OkxvY2FsQ2FsYzo6bGl2ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpB
aXI6OlJlZ0xpdmVuZXNzOjpMb2NhbENhbGM6OmlzTGl2ZSk6IERlbGV0ZWQuCisKIDIwMTctMDQt
MTMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0pT
Q10gVXNlIHByb3BlciBpZmRlZiBndWFyZCBmb3IgY29kZSB1c2luZyBNYWNoaW5lQ29udGV4dApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0Fu
ZFN0YWNrQnlMaW5lYXJTY2FuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tCeUxpbmVhclNjYW4uY3BwCShy
ZXZpc2lvbiAyMTUzMTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9j
YXRlUmVnaXN0ZXJzQW5kU3RhY2tCeUxpbmVhclNjYW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MjEsNiArMjIxLDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5zdElu
ZGV4ID0gMDsgaW5zdEluZGV4IDwgYmxvY2stPnNpemUoKTsgKytpbnN0SW5kZXgpIHsKICAgICAg
ICAgICAgICAgICBJbnN0JiBpbnN0ID0gYmxvY2stPmF0KGluc3RJbmRleCk7CiAgICAgICAgICAg
ICAgICAgc2l6ZV90IGluZGV4T2ZFYXJseSA9IGluZGV4T2ZIZWFkICsgaW5zdEluZGV4ICogMjsK
KyAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2UgY2FuIGdldCB0aGlzIGluZm9ybWF0aW9uIGZy
b20gdGhlIGxpdmVuZXNzIGNvbnN0cmFpbnRzLiBFeGNlcHQgb2YKKyAgICAgICAgICAgICAgICAv
LyBjb3Vyc2Ugd2Ugd2FudCB0byBzZXBhcmF0ZSB0aGUgZWFybGllcyBvZiBvbmUgaW5zdHJ1Y3Rp
b24gZnJvbSB0aGUgbGF0ZXMgb2YKKyAgICAgICAgICAgICAgICAvLyB0aGUgbmV4dC4KICAgICAg
ICAgICAgICAgICBpbnN0LmZvckVhY2hUbXAoCiAgICAgICAgICAgICAgICAgICAgIFsmXSAoVG1w
JiB0bXAsIEFyZzo6Um9sZSByb2xlLCBCYW5rLCBXaWR0aCkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKHRtcC5pc1JlZygpKQpAQCAtMjI5LDEwICsyMzIsMTQgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIFJlZ0xp
dmVuZXNzOjpMb2NhbENhbGMgbG9jYWxDYWxjKGxpdmVuZXNzLCBibG9jayk7CisgICAgICAgICAg
ICBSZWdMaXZlbmVzczo6TG9jYWxDYWxjRm9yVW5pZmllZFRtcExpdmVuZXNzIGxvY2FsQ2FsYyhs
aXZlbmVzcywgYmxvY2spOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBhdXRvIHJlY29yZCA9
IFsmXSAodW5zaWduZWQgaW5zdEluZGV4KSB7Ci0gICAgICAgICAgICAgICAgUmVnaXN0ZXJTZXQg
cmVncyA9IGxvY2FsQ2FsYy5saXZlKCk7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMg
Y291bGQgcmVnIHRoZSByZWdpc3RlciBzZXRzIGZyb20gc29tZXdoZXJlIGVsc2UsIGxpa2UgdGhl
CisgICAgICAgICAgICAgICAgLy8gbGl2ZW5lc3MgY29uc3RyYWludHMuIEV4Y2VwdCB3ZSB3YW50
IHRob3NlIGNvbnN0cmFpbnRzIHRvIGJlIGxhaWQgb3V0IGxpa2UKKyAgICAgICAgICAgICAgICAv
LyBob3cgdGhleSB3b3VsZCBoYXZlIGJlZW4gYnkgUmVnTGl2ZW5lc3MsIHNpbmNlIHdlIHdhbnQg
dG8gc2VwYXJhdGUgdGhlIGxhdGVzCisgICAgICAgICAgICAgICAgLy8gb2Ygb25lIGluc3QgZnJv
bSB0aGUgZWFybGllcyBvZiB0aGUgbmV4dC4KKyAgICAgICAgICAgICAgICBjb25zdCBSZWdpc3Rl
clNldCYgcmVncyA9IGxvY2FsQ2FsYy5saXZlKCk7CiAgICAgICAgICAgICAgICAgaWYgKEluc3Qq
IHByZXYgPSBibG9jay0+Z2V0KGluc3RJbmRleCAtIDEpKSB7CiAgICAgICAgICAgICAgICAgICAg
IFJlZ2lzdGVyU2V0IHByZXZSZWdzID0gcmVnczsKICAgICAgICAgICAgICAgICAgICAgcHJldi0+
Zm9yRWFjaDxSZWc+KApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMaXZl
bmVzc0FkYXB0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckxpdmVuZXNzQWRhcHRlci5oCShyZXZpc2lvbiAyMTUzMTkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckxpdmVuZXNzQWRhcHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Myw2ICszMyw3IEBACiAjaW5jbHVkZSAiQWlySW5zdElubGluZXMuaCIKICNpbmNsdWRlICJBaXJT
dGFja1Nsb3QuaCIKICNpbmNsdWRlICJBaXJUbXBJbmxpbmVzLmgiCisjaW5jbHVkZSA8d3RmL0lu
ZGV4TWFwLmg+CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWly
IHsKIApAQCAtNTMsNyArNTQsNyBAQCBzdHJ1Y3QgTGl2ZW5lc3NBZGFwdGVyIHsKICAgICAKICAg
ICBMaXZlbmVzc0FkYXB0ZXIoQ29kZSYgY29kZSkKICAgICAgICAgOiBjb2RlKGNvZGUpCi0gICAg
ICAgICwgbV9hY3Rpb25zKGNvZGUuc2l6ZSgpKQorICAgICAgICAsIGFjdGlvbnMoY29kZS5zaXpl
KCkpCiAgICAgewogICAgIH0KICAgICAKQEAgLTY1LDcgKzY2LDcgQEAgc3RydWN0IExpdmVuZXNz
QWRhcHRlciB7CiAgICAgdm9pZCBwcmVwYXJlVG9Db21wdXRlKCkKICAgICB7CiAgICAgICAgIGZv
ciAoQmFzaWNCbG9jayogYmxvY2sgOiBjb2RlKSB7Ci0gICAgICAgICAgICBBY3Rpb25zRm9yQm91
bmRhcnkmIGFjdGlvbnNGb3JCb3VuZGFyeSA9IG1fYWN0aW9uc1tibG9ja107CisgICAgICAgICAg
ICBBY3Rpb25zRm9yQm91bmRhcnkmIGFjdGlvbnNGb3JCb3VuZGFyeSA9IGFjdGlvbnNbYmxvY2td
OwogICAgICAgICAgICAgYWN0aW9uc0ZvckJvdW5kYXJ5LnJlc2l6ZShibG9jay0+c2l6ZSgpICsg
MSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGluc3RJbmRleCA9IGJs
b2NrLT5zaXplKCk7IGluc3RJbmRleC0tOykgewpAQCAtOTIsNyArOTMsNyBAQCBzdHJ1Y3QgTGl2
ZW5lc3NBZGFwdGVyIHsKICAgICAKICAgICBBY3Rpb25zJiBhY3Rpb25zQXQoQmFzaWNCbG9jayog
YmxvY2ssIHVuc2lnbmVkIGluc3RCb3VuZGFyeUluZGV4KQogICAgIHsKLSAgICAgICAgcmV0dXJu
IG1fYWN0aW9uc1tibG9ja11baW5zdEJvdW5kYXJ5SW5kZXhdOworICAgICAgICByZXR1cm4gYWN0
aW9uc1tibG9ja11baW5zdEJvdW5kYXJ5SW5kZXhdOwogICAgIH0KICAgICAKICAgICB1bnNpZ25l
ZCBibG9ja1NpemUoQmFzaWNCbG9jayogYmxvY2spCkBAIC0xMTUsNyArMTE2LDcgQEAgc3RydWN0
IExpdmVuZXNzQWRhcHRlciB7CiAgICAgfQogCiAgICAgQ29kZSYgY29kZTsKLSAgICBJbmRleE1h
cDxCYXNpY0Jsb2NrKiwgQWN0aW9uc0ZvckJvdW5kYXJ5PiBtX2FjdGlvbnM7CisgICAgSW5kZXhN
YXA8QmFzaWNCbG9jayosIEFjdGlvbnNGb3JCb3VuZGFyeT4gYWN0aW9uczsKIH07CiAKIHRlbXBs
YXRlPEJhbmsgYWRhcHRlckJhbmssIEFyZzo6VGVtcGVyYXR1cmUgbWluaW11bVRlbXBlcmF0dXJl
ID0gQXJnOjpDb2xkPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJSZWdM
aXZlbmVzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJSZWdMaXZlbmVzcy5jcHAJKHJldmlzaW9uIDIxNTMxOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyUmVnTGl2ZW5lc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICsz
NiwyOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlCiBSZWdMaXZl
bmVzczo6UmVnTGl2ZW5lc3MoQ29kZSYgY29kZSkKICAgICA6IG1fbGl2ZUF0SGVhZChjb2RlLnNp
emUoKSkKICAgICAsIG1fbGl2ZUF0VGFpbChjb2RlLnNpemUoKSkKKyAgICAsIG1fYWN0aW9ucyhj
b2RlLnNpemUoKSkKIHsKKyAgICAvLyBDb21wdXRlIGNvbnN0cmFpbnRzLgorICAgIGZvciAoQmFz
aWNCbG9jayogYmxvY2sgOiBjb2RlKSB7CisgICAgICAgIEFjdGlvbnNGb3JCb3VuZGFyeSYgYWN0
aW9uc0ZvckJvdW5kYXJ5ID0gbV9hY3Rpb25zW2Jsb2NrXTsKKyAgICAgICAgYWN0aW9uc0ZvckJv
dW5kYXJ5LnJlc2l6ZShibG9jay0+c2l6ZSgpICsgMSk7CisgICAgICAgIAorICAgICAgICBmb3Ig
KHNpemVfdCBpbnN0SW5kZXggPSBibG9jay0+c2l6ZSgpOyBpbnN0SW5kZXgtLTspIHsKKyAgICAg
ICAgICAgIEluc3QmIGluc3QgPSBibG9jay0+YXQoaW5zdEluZGV4KTsKKyAgICAgICAgICAgIGlu
c3QuZm9yRWFjaDxSZWc+KAorICAgICAgICAgICAgICAgIFsmXSAoUmVnJiByZWcsIEFyZzo6Um9s
ZSByb2xlLCBCYW5rLCBXaWR0aCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoQXJnOjppc0Vh
cmx5VXNlKHJvbGUpKQorICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uc0ZvckJvdW5kYXJ5
W2luc3RJbmRleF0udXNlLmFkZChyZWcpOworICAgICAgICAgICAgICAgICAgICBpZiAoQXJnOjpp
c0Vhcmx5RGVmKHJvbGUpKQorICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uc0ZvckJvdW5k
YXJ5W2luc3RJbmRleF0uZGVmLmFkZChyZWcpOworICAgICAgICAgICAgICAgICAgICBpZiAoQXJn
Ojppc0xhdGVVc2Uocm9sZSkpCisgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25zRm9yQm91
bmRhcnlbaW5zdEluZGV4ICsgMV0udXNlLmFkZChyZWcpOworICAgICAgICAgICAgICAgICAgICBp
ZiAoQXJnOjppc0xhdGVEZWYocm9sZSkpCisgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25z
Rm9yQm91bmRhcnlbaW5zdEluZGV4ICsgMV0uZGVmLmFkZChyZWcpOworICAgICAgICAgICAgICAg
IH0pOworICAgICAgICB9CisgICAgfQorICAgIAogICAgIC8vIFRoZSBsaXZlQXRUYWlsIG9mIGVh
Y2ggYmxvY2sgYXV0b21hdGljYWxseSBjb250YWlucyB0aGUgTGF0ZVVzZSdzIG9mIHRoZSB0ZXJt
aW5hbC4KICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogY29kZSkgewogICAgICAgICBSZWdp
c3RlclNldCYgbGl2ZUF0VGFpbCA9IG1fbGl2ZUF0VGFpbFtibG9ja107CkBAIC05OCw0MiArMTIw
LDI4IEBAIFJlZ0xpdmVuZXNzOjp+UmVnTGl2ZW5lc3MoKQogewogfQogCi12b2lkIFJlZ0xpdmVu
ZXNzOjpMb2NhbENhbGM6OmV4ZWN1dGUodW5zaWduZWQgaW5zdEluZGV4KQorUmVnTGl2ZW5lc3M6
OkxvY2FsQ2FsY0ZvclVuaWZpZWRUbXBMaXZlbmVzczo6TG9jYWxDYWxjRm9yVW5pZmllZFRtcExp
dmVuZXNzKFVuaWZpZWRUbXBMaXZlbmVzcyYgbGl2ZW5lc3MsIEJhc2ljQmxvY2sqIGJsb2NrKQor
ICAgIDogTG9jYWxDYWxjQmFzZShibG9jaykKKyAgICAsIG1fY29kZShsaXZlbmVzcy5jb2RlKQor
ICAgICwgbV9hY3Rpb25zKGxpdmVuZXNzLmFjdGlvbnNbYmxvY2tdKQogewotICAgIEluc3QmIGlu
c3QgPSBtX2Jsb2NrLT5hdChpbnN0SW5kZXgpOwotICAgICAgICAgICAgCi0gICAgLy8gRmlyc3Qg
aGFuZGxlIHRoZSBlYXJseSBkZWYncyBvZiB0aGUgbmV4dCBpbnN0cnVjdGlvbi4KLSAgICBpZiAo
aW5zdEluZGV4ICsgMSA8IG1fYmxvY2stPnNpemUoKSkgewotICAgICAgICBJbnN0JiBuZXh0SW5z
dCA9IG1fYmxvY2stPmF0KGluc3RJbmRleCArIDEpOwotICAgICAgICBuZXh0SW5zdC5mb3JFYWNo
PFJlZz4oCi0gICAgICAgICAgICBbJl0gKFJlZyYgcmVnLCBBcmc6OlJvbGUgcm9sZSwgQmFuaywg
V2lkdGgpIHsKLSAgICAgICAgICAgICAgICBpZiAoQXJnOjppc0Vhcmx5RGVmKHJvbGUpKQotICAg
ICAgICAgICAgICAgICAgICBtX3dvcmtzZXQucmVtb3ZlKHJlZyk7Ci0gICAgICAgICAgICB9KTsK
KyAgICBmb3IgKFRtcCB0bXAgOiBsaXZlbmVzcy5saXZlQXRUYWlsKGJsb2NrKSkgeworICAgICAg
ICBpZiAodG1wLmlzUmVnKCkpCisgICAgICAgICAgICBtX3dvcmtzZXQuYWRkKHRtcC5yZWcoKSk7
CiAgICAgfQotICAgICAgICAgICAgCi0gICAgLy8gVGhlbiBoYW5kbGUgZGVmJ3MuCi0gICAgaW5z
dC5mb3JFYWNoPFJlZz4oCi0gICAgICAgIFsmXSAoUmVnJiByZWcsIEFyZzo6Um9sZSByb2xlLCBC
YW5rLCBXaWR0aCkgewotICAgICAgICAgICAgaWYgKEFyZzo6aXNMYXRlRGVmKHJvbGUpKQotICAg
ICAgICAgICAgICAgIG1fd29ya3NldC5yZW1vdmUocmVnKTsKLSAgICAgICAgfSk7Ci0gICAgICAg
ICAgICAKLSAgICAvLyBUaGVuIGhhbmRsZSB1c2Uncy4KLSAgICBpbnN0LmZvckVhY2g8UmVnPigK
LSAgICAgICAgWyZdIChSZWcmIHJlZywgQXJnOjpSb2xlIHJvbGUsIEJhbmssIFdpZHRoKSB7Ci0g
ICAgICAgICAgICBpZiAoQXJnOjppc0Vhcmx5VXNlKHJvbGUpKQotICAgICAgICAgICAgICAgIG1f
d29ya3NldC5hZGQocmVnKTsKLSAgICAgICAgfSk7Ci0gICAgICAgICAgICAKLSAgICAvLyBBbmQg
ZmluYWxseSwgaGFuZGxlIHRoZSBsYXRlIHVzZSdzIG9mIHRoZSBwcmV2aW91cyBpbnN0cnVjdGlv
bi4KLSAgICBpZiAoaW5zdEluZGV4KSB7Ci0gICAgICAgIEluc3QmIHByZXZJbnN0ID0gbV9ibG9j
ay0+YXQoaW5zdEluZGV4IC0gMSk7Ci0gICAgICAgIHByZXZJbnN0LmZvckVhY2g8UmVnPigKLSAg
ICAgICAgICAgIFsmXSAoUmVnJiByZWcsIEFyZzo6Um9sZSByb2xlLCBCYW5rLCBXaWR0aCkgewot
ICAgICAgICAgICAgICAgIGlmIChBcmc6OmlzTGF0ZVVzZShyb2xlKSkKLSAgICAgICAgICAgICAg
ICAgICAgbV93b3Jrc2V0LmFkZChyZWcpOwotICAgICAgICAgICAgfSk7Cit9CisKK3ZvaWQgUmVn
TGl2ZW5lc3M6OkxvY2FsQ2FsY0ZvclVuaWZpZWRUbXBMaXZlbmVzczo6ZXhlY3V0ZSh1bnNpZ25l
ZCBpbnN0SW5kZXgpCit7CisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA6IG1fYWN0aW9uc1tpbnN0
SW5kZXggKyAxXS5kZWYpIHsKKyAgICAgICAgVG1wIHRtcCA9IFRtcDo6dG1wRm9yTGluZWFySW5k
ZXgobV9jb2RlLCBpbmRleCk7CisgICAgICAgIGlmICh0bXAuaXNSZWcoKSkKKyAgICAgICAgICAg
IG1fd29ya3NldC5yZW1vdmUodG1wLnJlZygpKTsKKyAgICB9CisgICAgZm9yICh1bnNpZ25lZCBp
bmRleCA6IG1fYWN0aW9uc1tpbnN0SW5kZXhdLnVzZSkgeworICAgICAgICBUbXAgdG1wID0gVG1w
Ojp0bXBGb3JMaW5lYXJJbmRleChtX2NvZGUsIGluZGV4KTsKKyAgICAgICAgaWYgKHRtcC5pc1Jl
ZygpKQorICAgICAgICAgICAgbV93b3Jrc2V0LmFkZCh0bXAucmVnKCkpOwogICAgIH0KIH0KIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJSZWdMaXZlbmVzcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyUmVnTGl2ZW5lc3MuaAko
cmV2aXNpb24gMjE1MzE5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJSZWdM
aXZlbmVzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQWly
SW5zdC5oIgogI2luY2x1ZGUgIkFpckxpdmVuZXNzLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJTZXQu
aCIKKyNpbmNsdWRlIDx3dGYvSW5kZXhNYXAuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBCMyB7IG5hbWVzcGFjZSBBaXIgewogCkBAIC00MCw2MCArNDEsNzQgQEAgbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZQogLy8gcmVnaXN0ZXIgbGl2ZW5lc3MuIFRoaXMg
aXMgYSBzcGVjaWFsaXphdGlvbiBvZiBMaXZlbmVzczw+IHRoYXQgdXNlcyBiaXR2ZWN0b3JzIGRp
cmVjdGx5LgogLy8gVGhpcyBtYWtlcyB0aGUgY29kZSBzdWZmaWNpZW50bHkgZGlmZmVyZW50IHRo
YXQgaXQgZGlkbid0IG1ha2Ugc2Vuc2UgdG8gdHJ5IHRvIHNoYXJlIGNvZGUuCiBjbGFzcyBSZWdM
aXZlbmVzcyB7CisgICAgc3RydWN0IEFjdGlvbnMgeworICAgICAgICBBY3Rpb25zKCkgeyB9Cisg
ICAgICAgIAorICAgICAgICBSZWdpc3RlclNldCB1c2U7CisgICAgICAgIFJlZ2lzdGVyU2V0IGRl
ZjsKKyAgICB9OworICAgIAorICAgIHR5cGVkZWYgVmVjdG9yPEFjdGlvbnMsIDAsIFVuc2FmZVZl
Y3Rvck92ZXJmbG93PiBBY3Rpb25zRm9yQm91bmRhcnk7CisgICAgCiBwdWJsaWM6CiAgICAgdHlw
ZWRlZiBSZWcgVGhpbmc7CiAgICAgCiAgICAgUmVnTGl2ZW5lc3MoQ29kZSYgY29kZSk7CiAgICAg
flJlZ0xpdmVuZXNzKCk7CiAgICAgCi0gICAgLy8gVGhpcyBjYWxjdWxhdG9yIGhhcyB0byBiZSBy
dW4gaW4gcmV2ZXJzZS4KLSAgICBjbGFzcyBMb2NhbENhbGMgeworICAgIGNsYXNzIExvY2FsQ2Fs
Y0Jhc2UgewogICAgIHB1YmxpYzoKLSAgICAgICAgTG9jYWxDYWxjKFJlZ0xpdmVuZXNzJiBsaXZl
bmVzcywgQmFzaWNCbG9jayogYmxvY2spCisgICAgICAgIExvY2FsQ2FsY0Jhc2UoQmFzaWNCbG9j
ayogYmxvY2spCiAgICAgICAgICAgICA6IG1fYmxvY2soYmxvY2spCi0gICAgICAgICAgICAsIG1f
d29ya3NldChsaXZlbmVzcy5tX2xpdmVBdFRhaWxbYmxvY2tdKQogICAgICAgICB7CiAgICAgICAg
IH0KICAgICAgICAgCi0gICAgICAgIC8vIElmIHlvdSBjb21wdXRlZCBUbXAgbGl2ZW5lc3MgZm9y
IHNvbWUgYmFuaywgeW91IGNhbiB1c2UgcmVnIGxpdmVuZXNzIHRvIGZpbGwgaW4gdGhlIGJsYW5r
cy4KLSAgICAgICAgLy8gTm90ZSB0aGF0IHdoYXQgaGFwcGVucyB0byB0aGUgcmVnaXN0ZXJzIG5v
dCBiZWxvbmdpbmcgdG8gdGhlIGJhbmsgaXMgYXJiaXRyYXJ5IC0gdGhleSBtYXkgZ2V0Ci0gICAg
ICAgIC8vIHNldCBvciBub3QuCi0gICAgICAgIHRlbXBsYXRlPEJhbmsgYmFuaz4KLSAgICAgICAg
TG9jYWxDYWxjKFRtcExpdmVuZXNzPGJhbms+JiBsaXZlbmVzcywgQmFzaWNCbG9jayogYmxvY2sp
Ci0gICAgICAgICAgICA6IG1fYmxvY2soYmxvY2spCisgICAgICAgIGNvbnN0IFJlZ2lzdGVyU2V0
JiBsaXZlKCkgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAgZm9yIChUbXAgdG1wIDogbGl2
ZW5lc3MubGl2ZUF0VGFpbChibG9jaykpIHsKLSAgICAgICAgICAgICAgICBpZiAodG1wLmlzUmVn
KCkpCi0gICAgICAgICAgICAgICAgICAgIG1fd29ya3NldC5zZXQodG1wLnJlZygpKTsKLSAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBtX3dvcmtzZXQ7CiAgICAgICAgIH0KICAgICAg
ICAgCi0gICAgICAgIExvY2FsQ2FsYyhVbmlmaWVkVG1wTGl2ZW5lc3MmIGxpdmVuZXNzLCBCYXNp
Y0Jsb2NrKiBibG9jaykKLSAgICAgICAgICAgIDogbV9ibG9jayhibG9jaykKKyAgICAgICAgYm9v
bCBpc0xpdmUoUmVnIHJlZykgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAgZm9yIChUbXAg
dG1wIDogbGl2ZW5lc3MubGl2ZUF0VGFpbChibG9jaykpIHsKLSAgICAgICAgICAgICAgICBpZiAo
dG1wLmlzUmVnKCkpCi0gICAgICAgICAgICAgICAgICAgIG1fd29ya3NldC5zZXQodG1wLnJlZygp
KTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBtX3dvcmtzZXQuY29udGFpbnMo
cmVnKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgY29uc3QgUmVnaXN0ZXJTZXQmIGxp
dmUoKSBjb25zdAorICAgIHByb3RlY3RlZDoKKyAgICAgICAgQmFzaWNCbG9jayogbV9ibG9jazsK
KyAgICAgICAgUmVnaXN0ZXJTZXQgbV93b3Jrc2V0OworICAgIH07CisgICAgCisgICAgLy8gVGhp
cyBjYWxjdWxhdG9yIGhhcyB0byBiZSBydW4gaW4gcmV2ZXJzZS4KKyAgICBjbGFzcyBMb2NhbENh
bGMgOiBwdWJsaWMgTG9jYWxDYWxjQmFzZSB7CisgICAgcHVibGljOgorICAgICAgICBMb2NhbENh
bGMoUmVnTGl2ZW5lc3MmIGxpdmVuZXNzLCBCYXNpY0Jsb2NrKiBibG9jaykKKyAgICAgICAgICAg
IDogTG9jYWxDYWxjQmFzZShibG9jaykKKyAgICAgICAgICAgICwgbV9hY3Rpb25zKGxpdmVuZXNz
Lm1fYWN0aW9uc1tibG9ja10pCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtX3dvcmtz
ZXQ7CisgICAgICAgICAgICBtX3dvcmtzZXQgPSBsaXZlbmVzcy5tX2xpdmVBdFRhaWxbYmxvY2td
OwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBib29sIGlzTGl2ZShSZWcgcmVnKSBjb25z
dAorICAgICAgICB2b2lkIGV4ZWN1dGUodW5zaWduZWQgaW5zdEluZGV4KQogICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gbV93b3Jrc2V0LmNvbnRhaW5zKHJlZyk7CisgICAgICAgICAgICBt
X3dvcmtzZXQuZXhjbHVkZShtX2FjdGlvbnNbaW5zdEluZGV4ICsgMV0uZGVmKTsKKyAgICAgICAg
ICAgIG1fd29ya3NldC5tZXJnZShtX2FjdGlvbnNbaW5zdEluZGV4XS51c2UpOwogICAgICAgICB9
CiAgICAgICAgIAotICAgICAgICB2b2lkIGV4ZWN1dGUodW5zaWduZWQgaW5zdEluZGV4KTsKLSAg
ICAgICAgCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIFJlZ0xpdmVuZXNzOwog
ICAgICAgICAKLSAgICAgICAgQmFzaWNCbG9jayogbV9ibG9jazsKLSAgICAgICAgUmVnaXN0ZXJT
ZXQgbV93b3Jrc2V0OworICAgICAgICBBY3Rpb25zRm9yQm91bmRhcnkmIG1fYWN0aW9uczsKKyAg
ICB9OworICAgIAorICAgIGNsYXNzIExvY2FsQ2FsY0ZvclVuaWZpZWRUbXBMaXZlbmVzcyA6IHB1
YmxpYyBMb2NhbENhbGNCYXNlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIExvY2FsQ2FsY0ZvclVu
aWZpZWRUbXBMaXZlbmVzcyhVbmlmaWVkVG1wTGl2ZW5lc3MmIGxpdmVuZXNzLCBCYXNpY0Jsb2Nr
KiBibG9jayk7CisgICAgICAgIAorICAgICAgICB2b2lkIGV4ZWN1dGUodW5zaWduZWQgaW5zdElu
ZGV4KTsKKyAgICAgICAgCisgICAgcHJpdmF0ZToKKyAgICAgICAgQ29kZSYgbV9jb2RlOworICAg
ICAgICBVbmlmaWVkVG1wTGl2ZW5lc3M6OkFjdGlvbnNGb3JCb3VuZGFyeSYgbV9hY3Rpb25zOwog
ICAgIH07CiAgICAgCiAgICAgY29uc3QgUmVnaXN0ZXJTZXQmIGxpdmVBdEhlYWQoQmFzaWNCbG9j
ayogYmxvY2spIGNvbnN0CkBAIC0xMDksNiArMTI0LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBJbmRleE1hcDxCYXNpY0Jsb2NrKiwgUmVnaXN0ZXJTZXQ+IG1fbGl2ZUF0SGVhZDsKICAgICBJ
bmRleE1hcDxCYXNpY0Jsb2NrKiwgUmVnaXN0ZXJTZXQ+IG1fbGl2ZUF0VGFpbDsKKyAgICBJbmRl
eE1hcDxCYXNpY0Jsb2NrKiwgQWN0aW9uc0ZvckJvdW5kYXJ5PiBtX2FjdGlvbnM7CiB9OwogCiB9
IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCg==
</data>
<flag name="review"
          id="328313"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>