<?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>125480</bug_id>
          
          <creation_ts>2013-12-09 20:56:00 -0800</creation_ts>
          <short_desc>Impose and enforce some basic rules of sanity for where Phi functions are allowed to occur and where their (optional) corresponding MovHints can be</short_desc>
          <delta_ts>2013-12-09 21:49:47 -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>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>
          
          <blocked>125433</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>958183</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-12-09 20:56:00 -0800</bug_when>
    <thetext>Right now, if you wanted to insert some speculation right after where a value was produced, you&apos;d get super confused if that value was produced by a Phi node.  You can&apos;t necessarily insert speculations after a Phi node because Phi nodes appear in this special sequence of Phis and MovHints that establish the OSR exit state for a block.  So, you&apos;d probably want to search for the next place where it&apos;s safe to insert things.  We already do this &quot;search for beginning of next bytecode instruction&quot; search by looking at the next node that has a different CodeOrigin.  But this would be hard for a Phi because those Phis and MovHints have basically random CodeOrigins and they can all have different CodeOrigins.

This patch imposes some sanity for this situation:

- Phis must have unset CodeOrigins.

- In each basic block, all nodes that have unset CodeOrigins must come before all nodes that have set CodeOrigins.

This all ends up working out just great because prior to this patch we didn&apos;t have a use for unset CodeOrigins.  I think it&apos;s appropriate to make &quot;unset CodeOrigin&quot; mean that we&apos;re in the prologue of a basic block.

It&apos;s interesting what this means for block merging, which we don&apos;t yet do in SSA.  Consider merging the edge A-&gt;B.  One possibility is that the block merger is now required to clean up Phi/Upsilons, and reascribe the MovHints to have the CodeOrigin of the A&apos;s block terminal.  But an answer that might be better is that the originless nodes at the top of the B are just given the origin of the terminal and we keep the Phis.  That would require changing the above rules.  We&apos;ll see how it goes, and what we end up picking...

Overall, this special-things-at-the-top rule is analogous to what other SSA-based compilers do.  For example, LLVM has rules mandating that Phis appear at the top of a block.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958184</commentid>
    <comment_count>1</comment_count>
      <attachid>218826</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-12-09 20:58:54 -0800</bug_when>
    <thetext>Created attachment 218826
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958188</commentid>
    <comment_count>2</comment_count>
      <attachid>218826</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-12-09 21:09:29 -0800</bug_when>
    <thetext>Comment on attachment 218826
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958199</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-12-09 21:49:47 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/160348</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218826</attachid>
            <date>2013-12-09 20:58:54 -0800</date>
            <delta_ts>2013-12-09 21:09:29 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>7358</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYwMzQ3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUzIEBA
CisyMDEzLTEyLTA5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
SW1wb3NlIGFuZCBlbmZvcmNlIHNvbWUgYmFzaWMgcnVsZXMgb2Ygc2FuaXR5IGZvciB3aGVyZSBQ
aGkgZnVuY3Rpb25zIGFyZSBhbGxvd2VkIHRvIG9jY3VyIGFuZCB3aGVyZSB0aGVpciAob3B0aW9u
YWwpIGNvcnJlc3BvbmRpbmcgTW92SGludHMgY2FuIGJlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjU0ODAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFByZXZpb3VzbHksIGlmIHlvdSB3YW50
ZWQgdG8gaW5zZXJ0IHNvbWUgc3BlY3VsYXRpb24gcmlnaHQgYWZ0ZXIgd2hlcmUgYSB2YWx1ZSB3
YXMKKyAgICAgICAgcHJvZHVjZWQsIHlvdSdkIGdldCBzdXBlciBjb25mdXNlZCBpZiB0aGF0IHZh
bHVlIHdhcyBwcm9kdWNlZCBieSBhIFBoaSBub2RlLiAgWW91IGNhbid0CisgICAgICAgIG5lY2Vz
c2FyaWx5IGluc2VydCBzcGVjdWxhdGlvbnMgYWZ0ZXIgYSBQaGkgbm9kZSBiZWNhdXNlIFBoaSBu
b2RlcyBhcHBlYXIgaW4gdGhpcworICAgICAgICBzcGVjaWFsIHNlcXVlbmNlIG9mIFBoaXMgYW5k
IE1vdkhpbnRzIHRoYXQgZXN0YWJsaXNoIHRoZSBPU1IgZXhpdCBzdGF0ZSBmb3IgYSBibG9jay4K
KyAgICAgICAgU28sIHlvdSdkIHByb2JhYmx5IHdhbnQgdG8gc2VhcmNoIGZvciB0aGUgbmV4dCBw
bGFjZSB3aGVyZSBpdCdzIHNhZmUgdG8gaW5zZXJ0IHRoaW5ncy4KKyAgICAgICAgV2UgYWxyZWFk
eSBkbyB0aGlzICJzZWFyY2ggZm9yIGJlZ2lubmluZyBvZiBuZXh0IGJ5dGVjb2RlIGluc3RydWN0
aW9uIiBzZWFyY2ggYnkKKyAgICAgICAgbG9va2luZyBhdCB0aGUgbmV4dCBub2RlIHRoYXQgaGFz
IGEgZGlmZmVyZW50IENvZGVPcmlnaW4uICBCdXQgdGhpcyB3b3VsZCBiZSBoYXJkIGZvciBhCisg
ICAgICAgIFBoaSBiZWNhdXNlIHRob3NlIFBoaXMgYW5kIE1vdkhpbnRzIGhhdmUgYmFzaWNhbGx5
IHJhbmRvbSBDb2RlT3JpZ2lucyBhbmQgdGhleSBjYW4gYWxsCisgICAgICAgIGhhdmUgZGlmZmVy
ZW50IENvZGVPcmlnaW5zLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGltcG9zZXMgc29tZSBzYW5p
dHkgZm9yIHRoaXMgc2l0dWF0aW9uOgorCisgICAgICAgIC0gUGhpcyBtdXN0IGhhdmUgdW5zZXQg
Q29kZU9yaWdpbnMuCisKKyAgICAgICAgLSBJbiBlYWNoIGJhc2ljIGJsb2NrLCBhbGwgbm9kZXMg
dGhhdCBoYXZlIHVuc2V0IENvZGVPcmlnaW5zIG11c3QgY29tZSBiZWZvcmUgYWxsIG5vZGVzCisg
ICAgICAgICAgdGhhdCBoYXZlIHNldCBDb2RlT3JpZ2lucy4KKworICAgICAgICBUaGlzIGFsbCBl
bmRzIHVwIHdvcmtpbmcgb3V0IGp1c3QgZ3JlYXQgYmVjYXVzZSBwcmlvciB0byB0aGlzIHBhdGNo
IHdlIGRpZG4ndCBoYXZlIGEgCisgICAgICAgIHVzZSBmb3IgdW5zZXQgQ29kZU9yaWdpbnMuICBJ
IHRoaW5rIGl0J3MgYXBwcm9wcmlhdGUgdG8gbWFrZSAidW5zZXQgQ29kZU9yaWdpbiIgbWVhbgor
ICAgICAgICB0aGF0IHdlJ3JlIGluIHRoZSBwcm9sb2d1ZSBvZiBhIGJhc2ljIGJsb2NrLgorCisg
ICAgICAgIEl0J3MgaW50ZXJlc3Rpbmcgd2hhdCB0aGlzIG1lYW5zIGZvciBibG9jayBtZXJnaW5n
LCB3aGljaCB3ZSBkb24ndCB5ZXQgZG8gaW4gU1NBLgorICAgICAgICBDb25zaWRlciBtZXJnaW5n
IHRoZSBlZGdlIEEtPkIuICBPbmUgcG9zc2liaWxpdHkgaXMgdGhhdCB0aGUgYmxvY2sgbWVyZ2Vy
IGlzIG5vdworICAgICAgICByZXF1aXJlZCB0byBjbGVhbiB1cCBQaGkvVXBzaWxvbnMsIGFuZCBy
ZWFzY3JpYmUgdGhlIE1vdkhpbnRzIHRvIGhhdmUgdGhlIENvZGVPcmlnaW4gb2YKKyAgICAgICAg
dGhlIEEncyBibG9jayB0ZXJtaW5hbC4gIEJ1dCBhbiBhbnN3ZXIgdGhhdCBtaWdodCBiZSBiZXR0
ZXIgaXMgdGhhdCB0aGUgb3JpZ2lubGVzcworICAgICAgICBub2RlcyBhdCB0aGUgdG9wIG9mIHRo
ZSBCIGFyZSBqdXN0IGdpdmVuIHRoZSBvcmlnaW4gb2YgdGhlIHRlcm1pbmFsIGFuZCB3ZSBrZWVw
IHRoZQorICAgICAgICBQaGlzLiAgVGhhdCB3b3VsZCByZXF1aXJlIGNoYW5naW5nIHRoZSBhYm92
ZSBydWxlcy4gIFdlJ2xsIHNlZSBob3cgaXQgZ29lcywgYW5kIHdoYXQgd2UKKyAgICAgICAgZW5k
IHVwIHBpY2tpbmcuLi4KKworICAgICAgICBPdmVyYWxsLCB0aGlzIHNwZWNpYWwtdGhpbmdzLWF0
LXRoZS10b3AgcnVsZSBpcyBhbmFsb2dvdXMgdG8gd2hhdCBvdGhlciBTU0EtYmFzZWQKKyAgICAg
ICAgY29tcGlsZXJzIGRvLiAgRm9yIGV4YW1wbGUsIExMVk0gaGFzIHJ1bGVzIG1hbmRhdGluZyB0
aGF0IFBoaXMgYXBwZWFyIGF0IHRoZSB0b3Agb2YgYQorICAgICAgICBibG9jay4KKworICAgICAg
ICAqIGJ5dGVjb2RlL0NvZGVPcmlnaW4uY3BwOgorICAgICAgICAoSlNDOjpDb2RlT3JpZ2luOjpk
dW1wKToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdEJhc2UuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpPU1JFeGl0QmFzZTo6T1NSRXhpdEJhc2UpOgorICAgICAgICAqIGRmZy9ERkdTU0FDb252ZXJz
aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNTQUNvbnZlcnNpb25QaGFzZTo6cnVu
KToKKyAgICAgICAgKiBkZmcvREZHVmFsaWRhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlZh
bGlkYXRlOjp2YWxpZGF0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6VmFsaWRhdGU6OnZhbGlkYXRl
U1NBKToKKwogMjAxMy0xMi0wOCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAg
ICAgICAgIFJldmVhbCBhcnJheSBib3VuZHMgY2hlY2tzIGluIERGRyBJUgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2luLmNwcAkocmV2aXNpb24gMTYw
MzQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01OSw2ICs1OSwxMSBAQCBWZWN0b3I8Q29kZU9yaWdpbj4gQ29kZU9y
aWdpbjo6aW5saW5lU3RhCiAKIHZvaWQgQ29kZU9yaWdpbjo6ZHVtcChQcmludFN0cmVhbSYgb3V0
KSBjb25zdAogeworICAgIGlmICghaXNTZXQoKSkgeworICAgICAgICBvdXQucHJpbnQoIjxub25l
PiIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAogICAgIFZlY3RvcjxDb2RlT3JpZ2lu
PiBzdGFjayA9IGlubGluZVN0YWNrKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHN0
YWNrLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmIChpKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFeGl0QmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdEJhc2UuaAkocmV2aXNpb24gMTYwMzQ3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0QmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00
OCw2ICs0OCw4IEBAIHN0cnVjdCBPU1JFeGl0QmFzZSB7CiAgICAgICAgICwgbV9jb2RlT3JpZ2lu
KG9yaWdpbikKICAgICAgICAgLCBtX2NvZGVPcmlnaW5Gb3JFeGl0UHJvZmlsZShvcmlnaW5Gb3JQ
cm9maWxlKQogICAgIHsKKyAgICAgICAgQVNTRVJUKG1fY29kZU9yaWdpbi5pc1NldCgpKTsKKyAg
ICAgICAgQVNTRVJUKG1fY29kZU9yaWdpbkZvckV4aXRQcm9maWxlLmlzU2V0KCkpOwogICAgIH0K
ICAgICAKICAgICBFeGl0S2luZCBtX2tpbmQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxNjAzNDcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE1MSw3ICsxNTEsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAg
ICAgICAgICAgICBOb2RlRmxhZ3MgcmVzdWx0ID0gcmVzdWx0Rm9yKGZvcm1hdCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBVc2VLaW5kIHVzZUtpbmQgPSB1c2VLaW5kRm9yKGZvcm1hdCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUgPSBt
X2luc2VydGlvblNldC5pbnNlcnROb2RlKDAsIFNwZWNOb25lLCBQaGksIG5vZGUtPmNvZGVPcmln
aW4pOworICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2Vy
dE5vZGUoMCwgU3BlY05vbmUsIFBoaSwgQ29kZU9yaWdpbigpKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIG5vZGUtPm1lcmdlRmxhZ3MocmVzdWx0KTsKICAgICAgICAgICAgICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKChub2RlLT5mbGFncygpICYgTm9kZVJlc3VsdE1hc2spID09IHJlc3Vs
dCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAKQEAgLTE4NCw3ICsxODQsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHZhbHVlIHdhcyBhbHJlYWR5IG9u
IHRoZSBzdGFjay4KICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMCwgU3BlY05vbmUsIE1vdkhpbnQsIG5vZGUtPmNvZGVPcmln
aW4sIE9wSW5mbyh2YXJpYWJsZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAs
IFNwZWNOb25lLCBNb3ZIaW50LCBDb2RlT3JpZ2luKCksIE9wSW5mbyh2YXJpYWJsZSksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVkZ2Uobm9kZSkpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkocmV2aXNpb24gMTYwMzQ3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MSw3
ICsxOTEsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAg
ICAgICBjYXNlIFNTQToKLSAgICAgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgU1NBIHZlcmlm
aWNhdGlvbi4KKyAgICAgICAgICAgIHZhbGlkYXRlU1NBKCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgIH0KQEAgLTM5OCw2ICszOTgsNDAgQEAgcHJpdmF0ZToKICAgICAgICAg
fQogICAgIH0KICAgICAKKyAgICB2b2lkIHZhbGlkYXRlU1NBKCkKKyAgICB7CisgICAgICAgIC8v
IEZJWE1FOiBBZGQgbW9yZSB0aGluZ3MgaGVyZS4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzQ3MQorICAgICAgICAKKyAgICAgICAgZm9yIChC
bG9ja0luZGV4IGJsb2NrSW5kZXggPSAwOyBibG9ja0luZGV4IDwgbV9ncmFwaC5udW1CbG9ja3Mo
KTsgKytibG9ja0luZGV4KSB7CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3Jh
cGguYmxvY2soYmxvY2tJbmRleCk7CisgICAgICAgICAgICBpZiAoIWJsb2NrKQorICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgCisgICAgICAgICAgICB1bnNpZ25lZCBub2Rl
SW5kZXggPSAwOworICAgICAgICAgICAgZm9yICg7IG5vZGVJbmRleCA8IGJsb2NrLT5zaXplKCkg
JiYgIWJsb2NrLT5hdChub2RlSW5kZXgpLT5jb2RlT3JpZ2luLmlzU2V0KCk7IG5vZGVJbmRleCsr
KSB7IH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgVkFMSURBVEUoKGJsb2NrKSwgbm9kZUlu
ZGV4IDwgYmxvY2stPnNpemUoKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZvciAoOyBu
b2RlSW5kZXggPCBibG9jay0+c2l6ZSgpOyBub2RlSW5kZXgrKykKKyAgICAgICAgICAgICAgICBW
QUxJREFURSgoYmxvY2stPmF0KG5vZGVJbmRleCkpLCBibG9jay0+YXQobm9kZUluZGV4KS0+Y29k
ZU9yaWdpbi5pc1NldCgpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBub2RlSW5kZXggPSAwOyBub2RlSW5kZXggPCBibG9jay0+c2l6ZSgpOyArK25vZGVJbmRleCkg
eworICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQobm9kZUluZGV4KTsKKyAg
ICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKKyAgICAgICAgICAgICAgICBjYXNl
IFBoaToKKyAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhbm9kZS0+Y29kZU9y
aWdpbi5pc1NldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIC8v
IEZJWE1FOiBBZGQgbW9yZSB0aGluZ3MgaGVyZS4KKyAgICAgICAgICAgICAgICAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzQ3MQorICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9CisgICAgCiAgICAgdm9pZCBjaGVja09wZXJhbmQoCiAgICAgICAgIEJhc2ljQmxv
Y2sqIGJsb2NrLCBPcGVyYW5kczxzaXplX3Q+JiBnZXRMb2NhbFBvc2l0aW9ucywKICAgICAgICAg
T3BlcmFuZHM8c2l6ZV90PiYgc2V0TG9jYWxQb3NpdGlvbnMsIFZpcnR1YWxSZWdpc3RlciBvcGVy
YW5kKQo=
</data>
<flag name="review"
          id="242355"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>