<?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>150878</bug_id>
          
          <creation_ts>2015-11-03 20:55:34 -0800</creation_ts>
          <short_desc>B3 should be able to compile a Check</short_desc>
          <delta_ts>2015-11-04 14:16:12 -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>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>
          
          <blocked>150279</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenb</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1139229</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-11-03 20:55:34 -0800</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139230</commentid>
    <comment_count>1</comment_count>
      <attachid>264765</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-11-03 20:59:16 -0800</bug_when>
    <thetext>Created attachment 264765
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139231</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-03 21:02:22 -0800</bug_when>
    <thetext>Attachment 264765 did not pass style-queue:


ERROR: Source/JavaScriptCore/b3/testb3.cpp:1778:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:1779:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:1781:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:1794:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:1794:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:1795:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
Total errors found: 6 in 4 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>1139342</commentid>
    <comment_count>3</comment_count>
      <attachid>264765</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-11-04 08:55:48 -0800</bug_when>
    <thetext>Comment on attachment 264765
the patch

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

r=me

&gt; Source/JavaScriptCore/b3/B3LowerToAir.cpp:486
&gt; +            case ValueRep::SomeRegister:

What&apos;s the difference between &quot;Register&quot; and &quot;SomeRegister&quot;?

&gt; Source/JavaScriptCore/b3/testb3.cpp:1781
&gt; +            CHECK(params.reps[0].value() == 1);

I&apos;m a bit confused here, why is this &quot;1&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139343</commentid>
    <comment_count>4</comment_count>
      <attachid>264765</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-11-04 08:56:02 -0800</bug_when>
    <thetext>Comment on attachment 264765
the patch

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

r=me

&gt; Source/JavaScriptCore/b3/B3LowerToAir.cpp:486
&gt; +            case ValueRep::SomeRegister:

What&apos;s the difference between &quot;Register&quot; and &quot;SomeRegister&quot;?

&gt; Source/JavaScriptCore/b3/testb3.cpp:1781
&gt; +            CHECK(params.reps[0].value() == 1);

I&apos;m a bit confused here, why is this &quot;1&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139434</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-11-04 14:14:29 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 264765 [details]
&gt; the patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=264765&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/JavaScriptCore/b3/B3LowerToAir.cpp:486
&gt; &gt; +            case ValueRep::SomeRegister:
&gt; 
&gt; What&apos;s the difference between &quot;Register&quot; and &quot;SomeRegister&quot;?

SomeRegister is a constraint requesting that the value ends up in a register.  It means that it can end up with any register that matches the value&apos;s type (GPR for int, FPR for double).

&gt; 
&gt; &gt; Source/JavaScriptCore/b3/testb3.cpp:1781
&gt; &gt; +            CHECK(params.reps[0].value() == 1);
&gt; 
&gt; I&apos;m a bit confused here, why is this &quot;1&quot;?

A Check is a stackmap, so it must provide a ValueRep for each operand. The ValueRep only needs to be valid on the path where the Check &quot;failed&quot;, i.e. its predicate was true. By convention, if you do:

Check(x, y)

Then we claim that x&apos;s value was 1.  Note that y is optional.  For y, we will provide an actual value recovery.

The reason why we don&apos;t provide an honest recovery of x is that it&apos;s not actually useful for most users of Check, and it just so happens to 1 is kind of correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139436</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-11-04 14:16:12 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/192035</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264765</attachid>
            <date>2015-11-03 20:59:16 -0800</date>
            <delta_ts>2015-11-04 08:55:48 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>9161</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTkyMDA3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBA
CisyMDE1LTExLTAzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QjMgc2hvdWxkIGJlIGFibGUgdG8gY29tcGlsZSBhIENoZWNrCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA4NzgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgQ2hlY2sgb3Bjb2RlIGluIEIzIGlzIGdv
aW5nIHRvIGJlIG91ciBtYWluIE9TUiBleGl0IG1lY2hhbmlzbS4gSXQgaXMgYSBzdGFja21hcAor
ICAgICAgICB2YWx1ZSwgc28geW91IGNhbiBwYXNzIGl0IGFueSBudW1iZXIgb2YgYWRkaXRpb25h
bCBhcmd1bWVudHMsIGFuZCB5b3Ugd2lsbCBnZXQgdG8gZmluZAorICAgICAgICBvdXQgaG93IHRo
b3NlIGFyZ3VtZW50cyBhcmUgcmVwcmVzZW50ZWQgYXQgdGhlIHBvaW50IHRoYXQgdGhlIHZhbHVl
IGxhbmRzIGluIHRoZSBtYWNoaW5lCisgICAgICAgIGNvZGUuIFVubGlrZSBhIFBhdGNocG9pbnQs
IGEgQ2hlY2sgYnJhbmNoZXMgb24gYSB2YWx1ZSwgd2l0aCB0aGUgZ29hbCBvZiBzdXBwb3J0aW5n
IGZ1bGwKKyAgICAgICAgY29tcGFyZS9icmFuY2ggZnVzaW9uLiBUaGUgc3RhY2ttYXAncyBnZW5l
cmF0b3IgcnVucyBpbiBhbiBvdXQtb2YtbGluZSBwYXRoIHRvIHdoaWNoCisgICAgICAgIHRoYXQg
YnJhbmNoIGlzIGxpbmtlZC4KKworICAgICAgICBUaGlzIGNoYW5nZSBmaWxscyBpbiB0aGUgZ2x1
ZSBuZWNlc3NhcnkgdG8gY29tcGlsZSBhIENoZWNrIGFuZCBpdCBpbmNsdWRlcyBhIHNpbXBsZQor
ICAgICAgICB0ZXN0IG9mIHRoaXMgZnVuY3Rpb25hbGl0eS4gVGhhdCB0ZXN0IGFsc28gaGFwcGVu
cyB0byBjaGVjayB0aGF0IHN1Y2ggc2ltcGxlIGNvZGUgd2lsbAorICAgICAgICBuZXZlciB1c2Ug
Y2FsbGVlLXNhdmVzLCB3aGljaCBJIHRoaW5rIGlzIHNlbnNpYmxlLgorCisgICAgICAgICogYjMv
QjNMb3dlclRvQWlyLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YXBw
ZW5kKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6ZW5zdXJlU3BlY2lhbCk6
CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmZpbGxTdGFja21hcCk6CisgICAg
ICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnRyeVN0YWNrU2xvdCk6CisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnRyeVBhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpC
Mzo6QWlyOjpMb3dlclRvQWlyOjp0cnlDaGVjayk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxv
d2VyVG9BaXI6OnRyeVVwc2lsb24pOgorICAgICAgICAqIGIzL0IzTG93ZXJpbmdNYXRjaGVyLnBh
dHRlcm5zOgorICAgICAgICAqIGIzL3Rlc3RiMy5jcHA6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0
U2ltcGxlUGF0Y2hwb2ludCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0U2ltcGxlQ2hlY2spOgor
ICAgICAgICAoSlNDOjpCMzo6cnVuKToKKwogMjAxNS0xMS0wMyAgTWFyayBMYW0gIDxtYXJrLmxh
bUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIG9wX2FkZCB0ZXN0cyB0byBjb21wYXJlIGJlaGF2
aW9yIG9mIEpJVCBnZW5lcmF0ZWQgY29kZSB0byB0aGUgTExJTlQncy4KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCShyZXZpc2lvbiAxOTIwMDcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkIzQWRkcmVzc01hdGNoZXIuaCIKICNpbmNsdWRl
ICJCM0FyZ3VtZW50UmVnVmFsdWUuaCIKICNpbmNsdWRlICJCM0Jhc2ljQmxvY2tJbmxpbmVzLmgi
CisjaW5jbHVkZSAiQjNDaGVja1NwZWNpYWwuaCIKICNpbmNsdWRlICJCM0NvbW11dGF0aXZpdHku
aCIKICNpbmNsdWRlICJCM0luZGV4TWFwLmgiCiAjaW5jbHVkZSAiQjNJbmRleFNldC5oIgpAQCAt
NDYyLDExICs0NjMsNDMgQEAgcHVibGljOgogICAgICAgICBpbnN0cy5sYXN0KCkuYXBwZW5kKElu
c3Qob3Bjb2RlLCBjdXJyZW50VmFsdWUsIHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50
cykuLi4pKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHZvaWQgZW5z
dXJlU3BlY2lhbChUKiYgZmllbGQpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUu
Li4gQXJndW1lbnRzPgorICAgIFQqIGVuc3VyZVNwZWNpYWwoVComIGZpZWxkLCBBcmd1bWVudHMm
Ji4uLiBhcmd1bWVudHMpCiAgICAgewotICAgICAgICBpZiAoIWZpZWxkKQotICAgICAgICAgICAg
ZmllbGQgPSBzdGF0aWNfY2FzdDxUKj4oY29kZS5hZGRTcGVjaWFsKHN0ZDo6bWFrZV91bmlxdWU8
VD4oKSkpOworICAgICAgICBpZiAoIWZpZWxkKSB7CisgICAgICAgICAgICBmaWVsZCA9IHN0YXRp
Y19jYXN0PFQqPigKKyAgICAgICAgICAgICAgICBjb2RlLmFkZFNwZWNpYWwoc3RkOjptYWtlX3Vu
aXF1ZTxUPihzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKSkpOworICAgICAg
ICB9CisgICAgICAgIHJldHVybiBmaWVsZDsKKyAgICB9CisKKyAgICB2b2lkIGZpbGxTdGFja21h
cChJbnN0JiBpbnN0LCBTdGFja21hcFZhbHVlKiBzdGFja21hcCwgdW5zaWduZWQgbnVtU2tpcHBl
ZCkKKyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51bVNraXBwZWQ7IGkgPCBzdGFj
a21hcC0+bnVtQ2hpbGRyZW4oKTsgKytpKSB7CisgICAgICAgICAgICBDb25zdHJhaW5lZFZhbHVl
IHZhbHVlID0gc3RhY2ttYXAtPmNvbnN0cmFpbmVkQ2hpbGQoaSk7CisKKyAgICAgICAgICAgIEFy
ZyBhcmc7CisgICAgICAgICAgICBzd2l0Y2ggKHZhbHVlLnJlcCgpLmtpbmQoKSkgeworICAgICAg
ICAgICAgY2FzZSBWYWx1ZVJlcDo6QW55OgorICAgICAgICAgICAgICAgIGFyZyA9IGltbU9yVG1w
KHZhbHVlLnZhbHVlKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyOgorICAgICAgICAgICAgICAgIGFyZyA9IHRtcCh2YWx1
ZS52YWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgVmFs
dWVSZXA6OlJlZ2lzdGVyOgorICAgICAgICAgICAgICAgIGFyZyA9IFRtcCh2YWx1ZS5yZXAoKS5y
ZWcoKSk7CisgICAgICAgICAgICAgICAgYXBwZW5kKE1vdmUsIGltbU9yVG1wKHZhbHVlLnZhbHVl
KCkpLCBhcmcpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBWYWx1
ZVJlcDo6U3RhY2tBcmd1bWVudDoKKyAgICAgICAgICAgICAgICBhcmcgPSBBcmc6OmNhbGxBcmco
dmFsdWUucmVwKCkub2Zmc2V0RnJvbVNQKCkpOworICAgICAgICAgICAgICAgIGFwcGVuZFN0b3Jl
KHZhbHVlLnZhbHVlKCksIGFyZyk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbnN0
LmFyZ3MuYXBwZW5kKGFyZyk7CisgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgSW5kZXhTZXQ8
VmFsdWU+IGxvY2tlZDsgLy8gVGhlc2UgYXJlIHZhbHVlcyB0aGF0IHdpbGwgaGF2ZSBubyBUbXAg
aW4gQWlyLgpAQCAtNDgzLDggKzUxNiw2IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBjdXJyZW50
SW5kZXg7CiAgICAgVmFsdWUqIGN1cnJlbnRWYWx1ZTsKIAotICAgIFBhdGNocG9pbnRTcGVjaWFs
KiBwYXRjaHBvaW50U3BlY2lhbCB7IDAgfTsKLQogICAgIC8vIFRoZSBhZGRyZXNzIHNlbGVjdG9y
IHdpbGwgbWF0Y2ggYW55IHBhdHRlcm4gd2hlcmUgdGhlIGlucHV0IG9wZXJhbmRzIGFyZSBhdmFp
bGFibGUgYXMgVG1wcy4KICAgICAvLyBJdCBkb2Vzbid0IGNhcmUgYWJvdXQgc2hhcmluZy4gSXQg
d2lsbCBoYXBwaWx5IGVtaXQgdGhlIHNhbWUgYWRkcmVzcyBleHByZXNzaW9uIG92ZXIgYW5kIG92
ZXIKICAgICAvLyBhZ2FpbiByZWdhcmRsZXNzIG9mIHRoZSBleHByZXNzaW9uJ3MgY29tcGxleGl0
eS4gVGhpcyB3b3JrcyBvdXQgZmluZSwgc2luY2UgYXQgdGhlIG1hY2hpbmUKQEAgLTgyMiw2ICs4
NTMsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAgIFBhdGNo
cG9pbnRTcGVjaWFsKiBwYXRjaHBvaW50U3BlY2lhbCB7IG51bGxwdHIgfTsKICAgICBib29sIHRy
eVBhdGNocG9pbnQoKQogICAgIHsKICAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50
VmFsdWUgPSBjdXJyZW50VmFsdWUtPmFzPFBhdGNocG9pbnRWYWx1ZT4oKTsKQEAgLTgzMiwzNCAr
ODY0LDQ3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKHBhdGNocG9pbnRWYWx1ZS0+dHlwZSgpICE9
IFZvaWQpCiAgICAgICAgICAgICBpbnN0LmFyZ3MuYXBwZW5kKHRtcChwYXRjaHBvaW50VmFsdWUp
KTsKIAotICAgICAgICBmb3IgKENvbnN0cmFpbmVkVmFsdWUgdmFsdWUgOiBwYXRjaHBvaW50VmFs
dWUtPmNvbnN0cmFpbmVkQ2hpbGRyZW4oKSkgewotICAgICAgICAgICAgQXJnIGFyZzsKLSAgICAg
ICAgICAgIHN3aXRjaCAodmFsdWUucmVwKCkua2luZCgpKSB7Ci0gICAgICAgICAgICBjYXNlIFZh
bHVlUmVwOjpBbnk6Ci0gICAgICAgICAgICAgICAgYXJnID0gaW1tT3JUbXAodmFsdWUudmFsdWUo
KSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFZhbHVlUmVwOjpT
b21lUmVnaXN0ZXI6Ci0gICAgICAgICAgICAgICAgYXJnID0gdG1wKHZhbHVlLnZhbHVlKCkpOwot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBWYWx1ZVJlcDo6UmVnaXN0
ZXI6Ci0gICAgICAgICAgICAgICAgYXJnID0gVG1wKHZhbHVlLnJlcCgpLnJlZygpKTsKLSAgICAg
ICAgICAgICAgICBhcHBlbmQoTW92ZSwgaW1tT3JUbXAodmFsdWUudmFsdWUoKSksIGFyZyk7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFZhbHVlUmVwOjpTdGFja0Fy
Z3VtZW50OgotICAgICAgICAgICAgICAgIGFyZyA9IEFyZzo6Y2FsbEFyZyh2YWx1ZS5yZXAoKS5v
ZmZzZXRGcm9tU1AoKSk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kU3RvcmUodmFsdWUudmFsdWUo
KSwgYXJnKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGluc3QuYXJncy5hcHBlbmQo
YXJnKTsKLSAgICAgICAgfQorICAgICAgICBmaWxsU3RhY2ttYXAoaW5zdCwgcGF0Y2hwb2ludFZh
bHVlLCAwKTsKICAgICAgICAgCiAgICAgICAgIGluc3RzLmxhc3QoKS5hcHBlbmQoV1RGOjptb3Zl
KGluc3QpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCisgICAgQ2hlY2tTcGVjaWFs
KiBjaGVja0JyYW5jaFRlc3QzMlNwZWNpYWwgeyBudWxscHRyIH07CisgICAgQ2hlY2tTcGVjaWFs
KiBjaGVja0JyYW5jaFRlc3Q2NFNwZWNpYWwgeyBudWxscHRyIH07CisgICAgYm9vbCB0cnlDaGVj
ayhWYWx1ZSogdmFsdWUpCisgICAgeworICAgICAgICBpZiAoIWlzSW50KHZhbHVlLT50eXBlKCkp
KSB7CisgICAgICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGRvdWJsZSBicmFuY2hlcy4KKyAg
ICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3
MjcKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIENoZWNr
U3BlY2lhbCogc3BlY2lhbDsKKyAgICAgICAgc3dpdGNoICh2YWx1ZS0+dHlwZSgpKSB7CisgICAg
ICAgIGNhc2UgSW50MzI6CisgICAgICAgICAgICBzcGVjaWFsID0gZW5zdXJlU3BlY2lhbChjaGVj
a0JyYW5jaFRlc3QzMlNwZWNpYWwsIEJyYW5jaFRlc3QzMiwgMyk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBJbnQ2NDoKKyAgICAgICAgICAgIHNwZWNpYWwgPSBlbnN1cmVTcGVj
aWFsKGNoZWNrQnJhbmNoVGVzdDY0U3BlY2lhbCwgQnJhbmNoVGVzdDY0LCAzKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAg
Q2hlY2tWYWx1ZSogY2hlY2tWYWx1ZSA9IGN1cnJlbnRWYWx1ZS0+YXM8Q2hlY2tWYWx1ZT4oKTsK
KworICAgICAgICBJbnN0IGluc3QoCisgICAgICAgICAgICBQYXRjaCwgY2hlY2tWYWx1ZSwgQXJn
OjpzcGVjaWFsKHNwZWNpYWwpLAorICAgICAgICAgICAgQXJnOjpyZXNDb25kKE1hY3JvQXNzZW1i
bGVyOjpOb25aZXJvKSwgdG1wKHZhbHVlKSwgQXJnOjppbW0oLTEpKTsKKworICAgICAgICBmaWxs
U3RhY2ttYXAoaW5zdCwgY2hlY2tWYWx1ZSwgMSk7CisKKyAgICAgICAgaW5zdHMubGFzdCgpLmFw
cGVuZChXVEY6Om1vdmUoaW5zdCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAg
ICBib29sIHRyeVVwc2lsb24oVmFsdWUqIHZhbHVlKQogICAgIHsKICAgICAgICAgYXBwZW5kKApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJpbmdNYXRjaGVyLnBhdHRlcm5z
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyaW5nTWF0Y2hl
ci5wYXR0ZXJucwkocmV2aXNpb24gMTkyMDA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzTG93ZXJpbmdNYXRjaGVyLnBhdHRlcm5zCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3
IEBAIFN0YWNrU2xvdCA9IFN0YWNrU2xvdCgpCiBGcmFtZVBvaW50ZXIgPSBGcmFtZVBvaW50ZXIo
KQogCiBQYXRjaHBvaW50ID0gUGF0Y2hwb2ludCgpCitDaGVjayA9IENoZWNrKHZhbHVlKQogCiBV
cHNpbG9uID0gVXBzaWxvbih2YWx1ZSkKIFBoaSA9IFBoaSgpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvdGVzdGIzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvdGVzdGIzLmNwcAkocmV2aXNpb24gMTkyMDA3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL3Rlc3RiMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NjgsNiArMTc2OCwzMyBAQCB2
b2lkIHRlc3RTaW1wbGVQYXRjaHBvaW50KCkKICAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4o
cHJvYywgMSwgMikgPT0gMyk7CiB9CiAKK3ZvaWQgdGVzdFNpbXBsZUNoZWNrKCkKK3sKKyAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgIFZhbHVlKiBhcmcgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgQ2hlY2tWYWx1ZSogY2hlY2sg
PSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywgQ2hlY2ssIE9yaWdpbigpLCBhcmcp
OworICAgIGNoZWNrLT5zZXRHZW5lcmF0b3IoCisgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBq
aXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAg
ICBDSEVDSyhwYXJhbXMucmVwcy5zaXplKCkgPT0gMSk7CisgICAgICAgICAgICBDSEVDSyhwYXJh
bXMucmVwc1swXS5pc0NvbnN0YW50KCkpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnJlcHNb
MF0udmFsdWUoKSA9PSAxKTsKKworICAgICAgICAgICAgLy8gVGhpcyBzaG91bGQgYWx3YXlzIHdv
cmsgYmVjYXVzZSBhIGZ1bmN0aW9uIHRoaXMgc2ltcGxlIHNob3VsZCBuZXZlciBoYXZlIGNhbGxl
ZQorICAgICAgICAgICAgLy8gc2F2ZXMuCisgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMig0MiksIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICAgICAg
ICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOworICAgICAgICAgICAgaml0LnJldCgpOwor
ICAgICAgICB9KTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAg
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIDApKTsKKworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjb2RlID0gY29t
cGlsZShwcm9jKTsKKyAgICAKKyAgICBDSEVDSyhpbnZva2U8aW50Pihjb2RlLCAwKSA9PSAwKTsK
KyAgICBDSEVDSyhpbnZva2U8aW50Pihjb2RlLCAxKSA9PSA0Mik7Cit9CisKICNkZWZpbmUgUlVO
KHRlc3QpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgaWYgKCFzaG91
bGRSdW4oI3Rlc3QpKSAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIGJyZWFrOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTE5OTAsNiArMjAxNyw3IEBAIHZvaWQgcnVu
KGNvbnN0IGNoYXIqIGZpbHRlcikKICAgICBSVU4odGVzdENvbXBsZXgoNCwgMzg0KSk7CiAKICAg
ICBSVU4odGVzdFNpbXBsZVBhdGNocG9pbnQoKSk7CisgICAgUlVOKHRlc3RTaW1wbGVDaGVjaygp
KTsKIAogICAgIGlmICghZGlkUnVuKQogICAgICAgICB1c2FnZSgpOwo=
</data>
<flag name="review"
          id="289870"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>