<?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>145850</bug_id>
          
          <creation_ts>2015-06-10 12:18:22 -0700</creation_ts>
          <short_desc>Simplify things like CompareEq(@x,@x)</short_desc>
          <delta_ts>2015-07-22 21:53:29 -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>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>basile_clement</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenb</cc>
    
    <cc>mmirman</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>1101086</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-06-10 12:18:22 -0700</bug_when>
    <thetext>I&apos;m seeing cases where these sort of float past our optimizations.  It&apos;s all because of silly omissions, like AI not handling CompareEq(@x, @x) and CFG simplification not being run in SSA.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101125</commentid>
    <comment_count>1</comment_count>
      <attachid>254680</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-06-10 14:58:18 -0700</bug_when>
    <thetext>Created attachment 254680
should just work</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1111546</commentid>
    <comment_count>2</comment_count>
      <attachid>257330</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-07-22 20:03:40 -0700</bug_when>
    <thetext>Created attachment 257330
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1111547</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-22 20:06:02 -0700</bug_when>
    <thetext>Attachment 257330 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1193:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1193:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1194:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1195:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1196:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1197:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1198:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1199:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1253:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1253:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1254:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1255:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1256:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1257:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1258:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1259:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1260:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1261:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1262:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1263:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Total errors found: 20 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>1111551</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-07-22 20:08:55 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Attachment 257330 [details] did not pass style-queue:
&gt; 
&gt; 
&gt; ERROR: Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1193: 
&gt; Boolean expressions that span multiple lines should have their operators on
&gt; the left side of the line instead of the right side.  [whitespace/operators]
&gt; [4]
&gt; ERROR: Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1193: 
&gt; Multi line control clauses should use braces.  [whitespace/braces] [4]
&gt; ERROR: Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1194: 
&gt; Boolean expressions that span multiple lines should have their operators on
&gt; the left side of the line instead of the right side.  [whitespace/operators]
&gt; [4]
&gt; ERROR: Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1195: 
&gt; Boolean expressions that span multiple lines should have their operators on
&gt; the left side of the line instead of the right side.  [whitespace/operators]
&gt; [4]
&gt; ERROR: Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1196: 
&gt; Boolean expressions that span multiple lines should have their operators on
&gt; the left side of the line instead of the right side.  [whitespace/operators]
&gt; [4]
&gt; ERROR: Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1197: 
&gt; Boolean expressions that span multiple lines should have their operators on
&gt; the left side of the line instead of the right side.  [whitespace/operators]
&gt; [4]
&gt; ERROR: Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1198: 
&gt; Boolean expressions that span multiple lines should have their operators on
&gt; the left side of the line instead of the right side.  [whitespace/operators]
&gt; [4]
&gt; ERROR: Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1199: 
&gt; Boolean expressions that span multiple lines should have their operators on
&gt; the left side of the line instead of the right side.  [whitespace/operators]
&gt; [4]
&gt; ERROR: Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1253: 
&gt; Boolean expressions that span multiple lines should have their operators on
&gt; the left side of the line instead of the right side.  [whitespace/operators]
&gt; [4]
&gt; ERROR: Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1253: 
&gt; Multi line control clauses should use braces.  [whitespace/braces] [4]
&gt; ERROR: Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1254: 
&gt; Boolean expressions that span multiple lines should have their operators on
&gt; the left side of the line instead of the right side.  [whitespace/operators]
&gt; [4]
&gt; ERROR: Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1255: 
&gt; Boolean expressions that span multiple lines should have their operators on
&gt; the left side of the line instead of the right side.  [whitespace/operators]
&gt; [4]
&gt; ERROR: Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1256: 
&gt; Boolean expressions that span multiple lines should have their operators on
&gt; the left side of the line instead of the right side.  [whitespace/operators]
&gt; [4]
&gt; ERROR: Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1257: 
&gt; Boolean expressions that span multiple lines should have their operators on
&gt; the left side of the line instead of the right side.  [whitespace/operators]
&gt; [4]
&gt; ERROR: Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1258: 
&gt; Boolean expressions that span multiple lines should have their operators on
&gt; the left side of the line instead of the right side.  [whitespace/operators]
&gt; [4]
&gt; ERROR: Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1259: 
&gt; Boolean expressions that span multiple lines should have their operators on
&gt; the left side of the line instead of the right side.  [whitespace/operators]
&gt; [4]
&gt; ERROR: Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1260: 
&gt; Boolean expressions that span multiple lines should have their operators on
&gt; the left side of the line instead of the right side.  [whitespace/operators]
&gt; [4]
&gt; ERROR: Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1261: 
&gt; Boolean expressions that span multiple lines should have their operators on
&gt; the left side of the line instead of the right side.  [whitespace/operators]
&gt; [4]
&gt; ERROR: Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1262: 
&gt; Boolean expressions that span multiple lines should have their operators on
&gt; the left side of the line instead of the right side.  [whitespace/operators]
&gt; [4]
&gt; ERROR: Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1263: 
&gt; Boolean expressions that span multiple lines should have their operators on
&gt; the left side of the line instead of the right side.  [whitespace/operators]
&gt; [4]
&gt; Total errors found: 20 in 4 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against
&gt; check-webkit-style.

I intentionally broke with the custom here because I wanted the various conditions to line up.  I think it makes the code more legible in this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1111582</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-07-22 21:53:29 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/187213</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254680</attachid>
            <date>2015-06-10 14:58:18 -0700</date>
            <delta_ts>2015-07-22 20:03:40 -0700</delta_ts>
            <desc>should just work</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>3885</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDE4NTQyOSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtMTE3MCw2ICsxMTcwLDM0IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAg
aWYgKG5vZGUtPmNoaWxkMSgpID09IG5vZGUtPmNoaWxkMigpKSB7CisgICAgICAgICAgICBpZiAo
bm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDMyVXNlKSB8fAorICAgICAgICAgICAgICAgIG5vZGUt
PmlzQmluYXJ5VXNlS2luZChJbnQ1MlJlcFVzZSkgfHwKKyAgICAgICAgICAgICAgICBub2RlLT5p
c0JpbmFyeVVzZUtpbmQoU3RyaW5nVXNlKSB8fAorICAgICAgICAgICAgICAgIG5vZGUtPmlzQmlu
YXJ5VXNlS2luZChCb29sZWFuVXNlKSB8fAorICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5
VXNlS2luZChTdHJpbmdJZGVudFVzZSkgfHwKKyAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFy
eVVzZUtpbmQoT2JqZWN0VXNlKSB8fAorICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNl
S2luZChPYmplY3RVc2UsIE9iamVjdE9yT3RoZXJVc2UpIHx8CisgICAgICAgICAgICAgICAgbm9k
ZS0+aXNCaW5hcnlVc2VLaW5kKE9iamVjdE9yT3RoZXJVc2UsIE9iamVjdFVzZSkpIHsKKyAgICAg
ICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIENv
bXBhcmVMZXNzOgorICAgICAgICAgICAgICAgIGNhc2UgQ29tcGFyZUdyZWF0ZXI6CisgICAgICAg
ICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbihmYWxzZSkpOworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIENvbXBhcmVMZXNzRXE6
CisgICAgICAgICAgICAgICAgY2FzZSBDb21wYXJlR3JlYXRlckVxOgorICAgICAgICAgICAgICAg
IGNhc2UgQ29tcGFyZUVxOgorICAgICAgICAgICAgICAgIGNhc2UgQ29tcGFyZUVxQ29uc3RhbnQ6
CisgICAgICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbih0cnVlKSk7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBub2RlLCAiVW5leHBlY3RlZCBu
b2RlIHR5cGUiKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIAogICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0Jvb2xlYW4pOwogICAgICAg
ICBicmVhazsKICAgICB9CkBAIC0xMjAyLDYgKzEyMzAsMjQgQEAgYm9vbCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgCisgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKSA9PSBub2RlLT5jaGlsZDIoKSkgewor
ICAgICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChCb29sZWFuVXNlKSB8fAorICAg
ICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQzMlVzZSkgfHwKKyAgICAgICAg
ICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50NTJSZXBVc2UpIHx8CisgICAgICAgICAg
ICAgICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ1VzZSkgfHwKKyAgICAgICAgICAgICAg
ICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nSWRlbnRVc2UpIHx8CisgICAgICAgICAgICAg
ICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE9iamVjdFVzZSkgfHwKKyAgICAgICAgICAgICAgICBu
b2RlLT5pc0JpbmFyeVVzZUtpbmQoTWlzY1VzZSwgVW50eXBlZFVzZSkgfHwKKyAgICAgICAgICAg
ICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSwgTWlzY1VzZSkgfHwKKyAgICAg
ICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nSWRlbnRVc2UsIE5vdFN0cmlu
Z1ZhclVzZSkgfHwKKyAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoTm90U3Ry
aW5nVmFyVXNlLCBTdHJpbmdJZGVudFVzZSkgfHwKKyAgICAgICAgICAgICAgICBub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoU3RyaW5nVXNlLCBVbnR5cGVkVXNlKSB8fAorICAgICAgICAgICAgICAgIG5v
ZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlLCBTdHJpbmdVc2UpKSB7CisgICAgICAgICAg
ICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKHRydWUpKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCiAgICAgICAgIGZvck5vZGUobm9k
ZSkuc2V0VHlwZShTcGVjQm9vbGVhbik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvbmFuLWVxdWFsLXVudHlwZWQuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9uYW4tZXF1YWwt
dW50eXBlZC5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvbmFuLWVxdWFsLXVudHlwZWQuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNCBA
QAorZnVuY3Rpb24gZm9vKHgpIHsKKyAgICByZXR1cm4geCA9PSB4OworfQorCitub0lubGluZShm
b28pOworCitmdW5jdGlvbiB0ZXN0KHZhbHVlKSB7CisgICAgdmFyIHJlc3VsdCA9IGZvbyh2YWx1
ZSk7CisgICAgaWYgKHJlc3VsdCAhPT0gdHJ1ZSkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQg
cmVzdWx0IGZvciAiICsgdmFsdWUgKyAiOiAiICsgcmVzdWx0OworfQorCitmb3IgKHZhciBpID0g
MDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICB0ZXN0KHRydWUpOworICAgIHRlc3QoNCk7CisgICAg
dGVzdCgiaGVsbG8iKTsKKyAgICB0ZXN0KG5ldyBPYmplY3QoKSk7CisgICAgdGVzdCgxLjUpOwor
fQorCit2YXIgcmVzdWx0ID0gZm9vKDAvMCk7CitpZiAocmVzdWx0ICE9PSBmYWxzZSkKKyAgICB0
aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQgYXQgZW5kOiAiICsgcmVzdWx0OworCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL25hbi1lcXVhbC5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL25hbi1lcXVhbC5qcwkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvbmFuLWVxdWFsLmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKK2Z1bmN0aW9uIGZvbyh4KSB7CisgICAg
cmV0dXJuIHggPT0geDsKK30KKworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkg
PCAxMDAwMDsgKytpKSB7CisgICAgdmFyIHJlc3VsdCA9IGZvbygwLzApOworICAgIGlmIChyZXN1
bHQgIT09IGZhbHNlKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1
bHQ7Cit9CisK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257330</attachid>
            <date>2015-07-22 20:03:40 -0700</date>
            <delta_ts>2015-07-22 21:10:18 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>4847</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg3MjA1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBA
CisyMDE1LTA3LTIyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
U2ltcGxpZnkgdGhpbmdzIGxpa2UgQ29tcGFyZUVxKEB4LEB4KQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1ODUwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBUaGlzIHNpbXBsaWZpZXMgeD09
eCB0byB0cnVlLCBleGNlcHQgaW4gY2FzZXMgd2hlcmUgeCBtaWdodCBiZSBhIGRvdWJsZSAoaW4g
d2hpY2ggY2FzZSB0aGlzCisgICAgICAgIG1pZ2h0IHN0aWxsIGJlIGZhbHNlIGlmIHggaXMgTmFO
KS4KKworICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAg
ICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL25hbi1lcXVhbC11bnR5cGVk
LmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiB0
ZXN0cy9zdHJlc3MvbmFuLWVxdWFsLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6CisKIDIwMTUt
MDctMjIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAg
SW50cm9kdWNpbmcgY29uc3RydWN0IGFiaWxpdHkgaW50byBKUyBleGVjdXRhYmxlcwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMTg3MjA0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTg5LDYgKzExODksMzQgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3Rh
dGVUeQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIAorICAgICAgICBpZiAobm9k
ZS0+Y2hpbGQxKCkgPT0gbm9kZS0+Y2hpbGQyKCkpIHsKKyAgICAgICAgICAgIGlmIChub2RlLT5p
c0JpbmFyeVVzZUtpbmQoSW50MzJVc2UpIHx8CisgICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5h
cnlVc2VLaW5kKEludDUyUmVwVXNlKSB8fAorICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5
VXNlS2luZChTdHJpbmdVc2UpIHx8CisgICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlVc2VL
aW5kKEJvb2xlYW5Vc2UpIHx8CisgICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5k
KFN0cmluZ0lkZW50VXNlKSB8fAorICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2lu
ZChPYmplY3RVc2UpIHx8CisgICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE9i
amVjdFVzZSwgT2JqZWN0T3JPdGhlclVzZSkgfHwKKyAgICAgICAgICAgICAgICBub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoT2JqZWN0T3JPdGhlclVzZSwgT2JqZWN0VXNlKSkgeworICAgICAgICAgICAg
ICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgQ29tcGFyZUxl
c3M6CisgICAgICAgICAgICAgICAgY2FzZSBDb21wYXJlR3JlYXRlcjoKKyAgICAgICAgICAgICAg
ICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKGZhbHNlKSk7CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQ29tcGFyZUxlc3NFcToKKyAgICAg
ICAgICAgICAgICBjYXNlIENvbXBhcmVHcmVhdGVyRXE6CisgICAgICAgICAgICAgICAgY2FzZSBD
b21wYXJlRXE6CisgICAgICAgICAgICAgICAgY2FzZSBDb21wYXJlRXFDb25zdGFudDoKKyAgICAg
ICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKHRydWUpKTsKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG5vZGUsICJVbmV4cGVjdGVkIG5vZGUgdHlw
ZSIpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCiAg
ICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjQm9vbGVhbik7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KQEAgLTEyMjEsNiArMTI0OSwyNCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8
QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAK
KyAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpID09IG5vZGUtPmNoaWxkMigpKSB7CisgICAgICAg
ICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJvb2xlYW5Vc2UpIHx8CisgICAgICAgICAg
ICAgICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDMyVXNlKSB8fAorICAgICAgICAgICAgICAg
IG5vZGUtPmlzQmluYXJ5VXNlS2luZChJbnQ1MlJlcFVzZSkgfHwKKyAgICAgICAgICAgICAgICBu
b2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nVXNlKSB8fAorICAgICAgICAgICAgICAgIG5vZGUt
PmlzQmluYXJ5VXNlS2luZChTdHJpbmdJZGVudFVzZSkgfHwKKyAgICAgICAgICAgICAgICBub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoT2JqZWN0VXNlKSB8fAorICAgICAgICAgICAgICAgIG5vZGUtPmlz
QmluYXJ5VXNlS2luZChNaXNjVXNlLCBVbnR5cGVkVXNlKSB8fAorICAgICAgICAgICAgICAgIG5v
ZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlLCBNaXNjVXNlKSB8fAorICAgICAgICAgICAg
ICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdJZGVudFVzZSwgTm90U3RyaW5nVmFyVXNl
KSB8fAorICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChOb3RTdHJpbmdWYXJV
c2UsIFN0cmluZ0lkZW50VXNlKSB8fAorICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNl
S2luZChTdHJpbmdVc2UsIFVudHlwZWRVc2UpIHx8CisgICAgICAgICAgICAgICAgbm9kZS0+aXNC
aW5hcnlVc2VLaW5kKFVudHlwZWRVc2UsIFN0cmluZ1VzZSkpIHsKKyAgICAgICAgICAgICAgICBz
ZXRDb25zdGFudChub2RlLCBqc0Jvb2xlYW4odHJ1ZSkpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorICAgICAgICB9CisKICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRU
eXBlKFNwZWNCb29sZWFuKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9uYW4tZXF1YWwtdW50eXBlZC5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL25hbi1lcXVhbC11bnR5cGVk
LmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9u
YW4tZXF1YWwtdW50eXBlZC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI0IEBACitmdW5j
dGlvbiBmb28oeCkgeworICAgIHJldHVybiB4ID09IHg7Cit9CisKK25vSW5saW5lKGZvbyk7CisK
K2Z1bmN0aW9uIHRlc3QodmFsdWUpIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vKHZhbHVlKTsKKyAg
ICBpZiAocmVzdWx0ICE9PSB0cnVlKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQg
Zm9yICIgKyB2YWx1ZSArICI6ICIgKyByZXN1bHQ7Cit9CisKK2ZvciAodmFyIGkgPSAwOyBpIDwg
MTAwMDA7ICsraSkgeworICAgIHRlc3QodHJ1ZSk7CisgICAgdGVzdCg0KTsKKyAgICB0ZXN0KCJo
ZWxsbyIpOworICAgIHRlc3QobmV3IE9iamVjdCgpKTsKKyAgICB0ZXN0KDEuNSk7Cit9CisKK3Zh
ciByZXN1bHQgPSBmb28oMC8wKTsKK2lmIChyZXN1bHQgIT09IGZhbHNlKQorICAgIHRocm93ICJF
cnJvcjogYmFkIHJlc3VsdCBhdCBlbmQ6ICIgKyByZXN1bHQ7CisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvbmFuLWVxdWFsLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvbmFuLWVxdWFsLmpzCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9uYW4tZXF1YWwuanMJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxMiBAQAorZnVuY3Rpb24gZm9vKHgpIHsKKyAgICByZXR1cm4g
eCA9PSB4OworfQorCitub0lubGluZShmb28pOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAw
OyArK2kpIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vKDAvMCk7CisgICAgaWYgKHJlc3VsdCAhPT0g
ZmFsc2UpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30K
Kwo=
</data>
<flag name="review"
          id="282482"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>