<?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>141211</bug_id>
          
          <creation_ts>2015-02-03 14:40:00 -0800</creation_ts>
          <short_desc>Remove BytecodeGenerator::preserveLastVar() and replace it with a more robust mechanism for preserving non-temporary registers</short_desc>
          <delta_ts>2015-02-06 08:05:04 -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>141174</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>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>1066570</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-02-03 14:40:00 -0800</bug_when>
    <thetext>Get rid of it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066571</commentid>
    <comment_count>1</comment_count>
      <attachid>245969</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-02-03 14:42:32 -0800</bug_when>
    <thetext>Created attachment 245969
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066572</commentid>
    <comment_count>2</comment_count>
      <attachid>245969</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-02-03 14:43:23 -0800</bug_when>
    <thetext>Comment on attachment 245969
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066573</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-02-03 14:51:44 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 245969 [details]
&gt; the patch
&gt; 
&gt; r=me

Invalid patch, will upload a new one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066574</commentid>
    <comment_count>4</comment_count>
      <attachid>245970</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-02-03 14:57:27 -0800</bug_when>
    <thetext>Created attachment 245970
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066579</commentid>
    <comment_count>5</comment_count>
      <attachid>245971</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-02-03 15:07:21 -0800</bug_when>
    <thetext>Created attachment 245971
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066580</commentid>
    <comment_count>6</comment_count>
      <attachid>245971</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-02-03 15:08:39 -0800</bug_when>
    <thetext>Comment on attachment 245971
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066587</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-02-03 15:13:32 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 245971 [details]
&gt; the patch
&gt; 
&gt; r=me

Lol, my patch is still wrong. ;-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066815</commentid>
    <comment_count>8</comment_count>
      <attachid>246035</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-02-04 08:57:39 -0800</bug_when>
    <thetext>Created attachment 246035
the patch

For real this time!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066832</commentid>
    <comment_count>9</comment_count>
      <attachid>246035</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-02-04 09:32:44 -0800</bug_when>
    <thetext>Comment on attachment 246035
the patch

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

&gt; Source/JavaScriptCore/ChangeLog:47
&gt; +2015-02-03  Filip Pizlo  &lt;fpizlo@apple.com&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +        
&gt; +        Also removes the localArgumentsRegister local variable in BytecodeGenerator&apos;s
&gt; +        constructor. It&apos;s not used.
&gt; +
&gt; +        * bytecompiler/BytecodeGenerator.cpp:
&gt; +        (JSC::BytecodeGenerator::BytecodeGenerator):
&gt; +        (JSC::BytecodeGenerator::preserveLastVar): Deleted.
&gt; +        * bytecompiler/BytecodeGenerator.h:
&gt; +        (JSC::BytecodeGenerator::addVar):
&gt; +

Leftover edit that should have been removed?

&gt; Source/JavaScriptCore/bytecompiler/RegisterID.h:75
&gt; -            ASSERT(!m_refCount);
&gt;  #ifndef NDEBUG
&gt;              m_didSetIndex = true;
&gt;  #endif

I think the main reason for the ASSERT(!m_refCount) is to ensure that the index is only set once before use.  Though the previous implementation allows us to “change our minds” and set the index to something else (which I don’t think is likely to happen) as long as we haven’t started using the RegisterID yet, I think the real bug it’s trying to watch out for is that we don’t use the RegisterID’s index in one place and then change it before using it in another (which is also unlikely to happen but if it does, it can cause havoc).

How about you replace this assert with ASSERT(!m_didSetIndex) in the #ifndef NDEBUG section instead?  Would that work?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066834</commentid>
    <comment_count>10</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-02-04 09:39:42 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; Comment on attachment 246035 [details]
&gt; the patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=246035&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:47
&gt; &gt; +2015-02-03  Filip Pizlo  &lt;fpizlo@apple.com&gt;
&gt; &gt; +
&gt; &gt; +        Reviewed by NOBODY (OOPS!).
&gt; &gt; +        
&gt; &gt; +        Also removes the localArgumentsRegister local variable in BytecodeGenerator&apos;s
&gt; &gt; +        constructor. It&apos;s not used.
&gt; &gt; +
&gt; &gt; +        * bytecompiler/BytecodeGenerator.cpp:
&gt; &gt; +        (JSC::BytecodeGenerator::BytecodeGenerator):
&gt; &gt; +        (JSC::BytecodeGenerator::preserveLastVar): Deleted.
&gt; &gt; +        * bytecompiler/BytecodeGenerator.h:
&gt; &gt; +        (JSC::BytecodeGenerator::addVar):
&gt; &gt; +
&gt; 
&gt; Leftover edit that should have been removed?

Yup, I removed it locally.

&gt; 
&gt; &gt; Source/JavaScriptCore/bytecompiler/RegisterID.h:75
&gt; &gt; -            ASSERT(!m_refCount);
&gt; &gt;  #ifndef NDEBUG
&gt; &gt;              m_didSetIndex = true;
&gt; &gt;  #endif
&gt; 
&gt; I think the main reason for the ASSERT(!m_refCount) is to ensure that the
&gt; index is only set once before use.  Though the previous implementation
&gt; allows us to “change our minds” and set the index to something else (which I
&gt; don’t think is likely to happen) as long as we haven’t started using the
&gt; RegisterID yet, I think the real bug it’s trying to watch out for is that we
&gt; don’t use the RegisterID’s index in one place and then change it before
&gt; using it in another (which is also unlikely to happen but if it does, it can
&gt; cause havoc).
&gt; 
&gt; How about you replace this assert with ASSERT(!m_didSetIndex) in the #ifndef
&gt; NDEBUG section instead?  Would that work?

But this does get called when m_didSetIndex is true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066837</commentid>
    <comment_count>11</comment_count>
      <attachid>246035</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-02-04 09:43:29 -0800</bug_when>
    <thetext>Comment on attachment 246035
the patch

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

r=me with ChangeLog fix.

&gt;&gt;&gt; Source/JavaScriptCore/bytecompiler/RegisterID.h:75
&gt;&gt;&gt;  #endif
&gt;&gt; 
&gt;&gt; I think the main reason for the ASSERT(!m_refCount) is to ensure that the index is only set once before use.  Though the previous implementation allows us to “change our minds” and set the index to something else (which I don’t think is likely to happen) as long as we haven’t started using the RegisterID yet, I think the real bug it’s trying to watch out for is that we don’t use the RegisterID’s index in one place and then change it before using it in another (which is also unlikely to happen but if it does, it can cause havoc).
&gt;&gt; 
&gt;&gt; How about you replace this assert with ASSERT(!m_didSetIndex) in the #ifndef NDEBUG section instead?  Would that work?
&gt; 
&gt; But this does get called when m_didSetIndex is true.

OK.  For Filip explained offline that for a scenario like:  function(a) { var a; }, the var a overrides argument a.  As such, the index for a’s RegisterID will be changed to match that of the argument’s.  Hence, m_didSetIndex is already true there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066838</commentid>
    <comment_count>12</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-02-04 09:44:27 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; OK.  For Filip explained offline that ...

I meant: For the record, Filip explained ...

Ahh typos.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067357</commentid>
    <comment_count>13</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-02-06 08:05:04 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/179746</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245969</attachid>
            <date>2015-02-03 14:42:32 -0800</date>
            <delta_ts>2015-02-03 14:57:27 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>2966</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc5NTcxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBA
CisyMDE1LTAyLTAzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Qnl0ZWNvZGVHZW5lcmF0b3I6Om1fbGFzdFZhciBpcyBub3QgdXNlZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxMjExCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBJIGRpZG4ndCBrbm93IGhv
dyB0byBoYW5kbGUgdGhpcyBkdXJpbmcgYSByZWZhY3RvcmluZywgYW5kIGl0IHR1cm5zIG91dCB0
aGF0IGl0J3MKKyAgICAgICAgdXNlbGVzcy4KKworICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRl
Y29kZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpwcmVzZXJ2
ZUxhc3RWYXIpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oOgorCiAyMDE1LTAyLTAzICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5j
b20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogQVNTRVJUIG1haW5UaHJlYWRQdGhyZWFkIGxh
dW5jaGluZyByZW1vdGUgZGVidWdnYWJsZSBKU0NvbnRleHQgYXBwIHdpdGggRGVidWcgSmF2YVNj
cmlwdENvcmUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAxNzk1MzMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTUxLDEyICsxNTEsNiBAQCBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjph
ZGRWYXIoCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnBy
ZXNlcnZlTGFzdFZhcigpCi17Ci0gICAgaWYgKChtX2ZpcnN0Q29uc3RhbnRJbmRleCA9IG1fY2Fs
bGVlUmVnaXN0ZXJzLnNpemUoKSkgIT0gMCkKLSAgICAgICAgbV9sYXN0VmFyID0gJm1fY2FsbGVl
UmVnaXN0ZXJzLmxhc3QoKTsKLX0KLQogQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJh
dG9yKFZNJiB2bSwgUHJvZ3JhbU5vZGUqIHByb2dyYW1Ob2RlLCBVbmxpbmtlZFByb2dyYW1Db2Rl
QmxvY2sqIGNvZGVCbG9jaywgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2Rl
IHByb2ZpbGVyTW9kZSkKICAgICA6IG1fc2hvdWxkRW1pdERlYnVnSG9va3MoT3B0aW9uczo6Zm9y
Y2VEZWJ1Z2dlckJ5dGVjb2RlR2VuZXJhdGlvbigpIHx8IGRlYnVnZ2VyTW9kZSA9PSBEZWJ1Z2dl
ck9uKQogICAgICwgbV9zaG91bGRFbWl0UHJvZmlsZUhvb2tzKE9wdGlvbnM6OmZvcmNlUHJvZmls
ZXJCeXRlY29kZUdlbmVyYXRpb24oKSB8fCBwcm9maWxlck1vZGUgPT0gUHJvZmlsZXJPbikKQEAg
LTQyOCw3ICs0MjIsNiBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0m
CiAgICAgICAgIH0KICAgICAgICAgYWRkUGFyYW1ldGVyKHNpbXBsZVBhcmFtZXRlci0+Ym91bmRQ
cm9wZXJ0eSgpLCBpbmRleCk7CiAgICAgfQotICAgIHByZXNlcnZlTGFzdFZhcigpOwogCiAgICAg
Ly8gV2UgZGVjbGFyZSB0aGUgY2FsbGVlJ3MgbmFtZSBsYXN0IGJlY2F1c2UgaXQgc2hvdWxkIGxv
c2UgdG8gYSB2YXIsIGZ1bmN0aW9uLCBhbmQvb3IgcGFyYW1ldGVyIGRlY2xhcmF0aW9uLgogICAg
IGFkZENhbGxlZShmdW5jdGlvbk5vZGUsIGNhbGxlZVJlZ2lzdGVyKTsKQEAgLTQ5Myw3ICs0ODYs
NiBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mCiAgICAgICAgIHZh
cmlhYmxlcy5hcHBlbmQodmFyU3RhY2tbaV0uZmlyc3QpOwogICAgIH0KICAgICBjb2RlQmxvY2st
PmFkb3B0VmFyaWFibGVzKHZhcmlhYmxlcyk7Ci0gICAgcHJlc2VydmVMYXN0VmFyKCk7CiB9CiAK
IEJ5dGVjb2RlR2VuZXJhdG9yOjp+Qnl0ZWNvZGVHZW5lcmF0b3IoKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
aAkocmV2aXNpb24gMTc5NTMzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC03NzcsNyArNzc3LDYgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxSZWdpc3RlcklELCAzMj4g
bV9wYXJhbWV0ZXJzOwogICAgICAgICBTZWdtZW50ZWRWZWN0b3I8TGFiZWwsIDMyPiBtX2xhYmVs
czsKICAgICAgICAgTGFiZWxTY29wZVN0b3JlIG1fbGFiZWxTY29wZXM7Ci0gICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBtX2xhc3RWYXI7CiAgICAgICAgIGludCBtX2ZpbmFsbHlEZXB0aDsKICAg
ICAgICAgaW50IG1fbG9jYWxTY29wZURlcHRoOwogICAgICAgICBDb2RlVHlwZSBtX2NvZGVUeXBl
Owo=
</data>
<flag name="review"
          id="270897"
          type_id="1"
          status="-"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245970</attachid>
            <date>2015-02-03 14:57:27 -0800</date>
            <delta_ts>2015-02-03 15:07:21 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>4440</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc5NTcxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBA
CisyMDE1LTAyLTAzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
UmVtb3ZlIEJ5dGVjb2RlR2VuZXJhdG9yOjpwcmVzZXJ2ZUxhc3RWYXIoKSBhbmQgcmVwbGFjZSBp
dCB3aXRoIGEgbW9yZSByb2J1c3QgbWVjaGFuaXNtIGZvciBwcmVzZXJ2aW5nIG5vbi10ZW1wb3Jh
cnkgcmVnaXN0ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDEyMTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAg
ICAgCisgICAgICAgIFByZXZpb3VzbHksIHRoZSB3YXkgbm9uLXRlbXBvcmFyeSByZWdpc3RlcnMg
d2VyZSBwcmVzZXJ2ZWQgKGkuZS4gbm90IHJlY2xhaW1lZCBhbnl0aW1lCisgICAgICAgIHdlIGRp
ZCBuZXdUZW1wb3JhcnkoKSkgYnkgY2FsbGluZyBwcmVzZXJ2ZUxhc3RWYXIoKSBhZnRlciBhbGwg
bm9uLXRlbXBzIGFyZSBjcmVhdGVkLiBJdAorICAgICAgICB3b3VsZCByYWlzZSB0aGUgcmVmY291
bnQgb24gdGhlIGxhc3QgKGhpZ2hlc3QtbnVtYmVyZWQpIHZhcmlhYmxlIGNyZWF0ZWQsIGFuZCBy
ZWx5IG9uCisgICAgICAgIHRoZSBmYWN0IHRoYXQgcmVnaXN0ZXIgcmVjbGFtYXRpb24gc3RhcnRl
ZCBhdCBoaWdoZXItbnVtYmVyZWQgcmVnaXN0ZXJzIGFuZCB3b3JrZWQgaXRzCisgICAgICAgIHdh
eSBkb3duLiBTbyBhbnkgcmV0YWluZWQgcmVnaXN0ZXIgd291bGQgYmxvY2sgYW55IGxvd2VyLW51
bWJlcmVkIHJlZ2lzdGVycyBmcm9tIGJlaW5nCisgICAgICAgIHJlY2xhaW1lZC4KKyAgICAgICAg
CisgICAgICAgIEFsc28sIHByZXNlcnZlTGFzdFZhcigpIHNldHMgYSB0aGluZyBjYWxsZWQgbV9m
aXJzdENvbnN0YW50SW5kZXguIEl0J3MgdW51c2VkLgorICAgICAgICAKKyAgICAgICAgVGhpcyBy
ZW1vdmVzIHByZXNlcnZlTGFzdFZhcigpIGFuZCBtYWtlcyBhZGRWYXIoKSByZXRhaW4gZWFjaCBy
ZWdpc3RlciBpdCBjcmVhdGVzLiBUaGlzCisgICAgICAgIGlzIG1vcmUgZXhwbGljaXQsIHNpbmNl
IGFkZFZhcigpIGlzIHRoZSBtZWNoYW5pc20gZm9yIGNyZWF0aW5nIG5vbi10ZW1wb3JhcnkgcmVn
aXN0ZXJzLgorCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnByZXNlcnZlTGFzdFZhcik6IERlbGV0ZWQu
CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjphZGRWYXIpOgorCiAyMDE1LTAyLTAzICBKb3NlcGggUGVj
b3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogQVNT
RVJUIG1haW5UaHJlYWRQdGhyZWFkIGxhdW5jaGluZyByZW1vdGUgZGVidWdnYWJsZSBKU0NvbnRl
eHQgYXBwIHdpdGggRGVidWcgSmF2YVNjcmlwdENvcmUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShy
ZXZpc2lvbiAxNzk1MzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUxLDEyICsxNTEsNiBAQCBi
b29sIEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRWYXIoCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZv
aWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnByZXNlcnZlTGFzdFZhcigpCi17Ci0gICAgaWYgKChtX2Zp
cnN0Q29uc3RhbnRJbmRleCA9IG1fY2FsbGVlUmVnaXN0ZXJzLnNpemUoKSkgIT0gMCkKLSAgICAg
ICAgbV9sYXN0VmFyID0gJm1fY2FsbGVlUmVnaXN0ZXJzLmxhc3QoKTsKLX0KLQogQnl0ZWNvZGVH
ZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgUHJvZ3JhbU5vZGUqIHByb2dyYW1O
b2RlLCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jaywgRGVidWdnZXJNb2RlIGRl
YnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSkKICAgICA6IG1fc2hvdWxkRW1p
dERlYnVnSG9va3MoT3B0aW9uczo6Zm9yY2VEZWJ1Z2dlckJ5dGVjb2RlR2VuZXJhdGlvbigpIHx8
IGRlYnVnZ2VyTW9kZSA9PSBEZWJ1Z2dlck9uKQogICAgICwgbV9zaG91bGRFbWl0UHJvZmlsZUhv
b2tzKE9wdGlvbnM6OmZvcmNlUHJvZmlsZXJCeXRlY29kZUdlbmVyYXRpb24oKSB8fCBwcm9maWxl
ck1vZGUgPT0gUHJvZmlsZXJPbikKQEAgLTQyOCw3ICs0MjIsNiBAQCBCeXRlY29kZUdlbmVyYXRv
cjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mCiAgICAgICAgIH0KICAgICAgICAgYWRkUGFyYW1ldGVy
KHNpbXBsZVBhcmFtZXRlci0+Ym91bmRQcm9wZXJ0eSgpLCBpbmRleCk7CiAgICAgfQotICAgIHBy
ZXNlcnZlTGFzdFZhcigpOwogCiAgICAgLy8gV2UgZGVjbGFyZSB0aGUgY2FsbGVlJ3MgbmFtZSBs
YXN0IGJlY2F1c2UgaXQgc2hvdWxkIGxvc2UgdG8gYSB2YXIsIGZ1bmN0aW9uLCBhbmQvb3IgcGFy
YW1ldGVyIGRlY2xhcmF0aW9uLgogICAgIGFkZENhbGxlZShmdW5jdGlvbk5vZGUsIGNhbGxlZVJl
Z2lzdGVyKTsKQEAgLTQ5Myw3ICs0ODYsNiBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVH
ZW5lcmF0b3IoVk0mCiAgICAgICAgIHZhcmlhYmxlcy5hcHBlbmQodmFyU3RhY2tbaV0uZmlyc3Qp
OwogICAgIH0KICAgICBjb2RlQmxvY2stPmFkb3B0VmFyaWFibGVzKHZhcmlhYmxlcyk7Ci0gICAg
cHJlc2VydmVMYXN0VmFyKCk7CiB9CiAKIEJ5dGVjb2RlR2VuZXJhdG9yOjp+Qnl0ZWNvZGVHZW5l
cmF0b3IoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkocmV2aXNpb24gMTc5NTMzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC02MzAsNyArNjMwLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3Rl
cklEKiBhZGRWYXIoKQogICAgICAgICB7CiAgICAgICAgICAgICArK21fY29kZUJsb2NrLT5tX251
bVZhcnM7Ci0gICAgICAgICAgICByZXR1cm4gbmV3UmVnaXN0ZXIoKTsKKyAgICAgICAgICAgIFJl
Z2lzdGVySUQqIHJlc3VsdCA9IG5ld1JlZ2lzdGVyKCk7CisgICAgICAgICAgICBBU1NFUlQocmVz
dWx0LT5pbmRleCgpID09IG1fY29kZUJsb2NrLT5tX251bVZhcnMgLSAxKTsKKyAgICAgICAgICAg
IHJlc3VsdC0+cmVmKCk7IC8vIFdlIHNob3VsZCBuZXZlciBmcmVlIHRoaXMgc2xvdC4KKyAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBSZXR1cm5zIHRo
ZSBpbmRleCBvZiB0aGUgYWRkZWQgdmFyLgpAQCAtNzc3LDcgKzc4MCw2IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBTZWdtZW50ZWRWZWN0b3I8UmVnaXN0ZXJJRCwgMzI+IG1fcGFyYW1ldGVy
czsKICAgICAgICAgU2VnbWVudGVkVmVjdG9yPExhYmVsLCAzMj4gbV9sYWJlbHM7CiAgICAgICAg
IExhYmVsU2NvcGVTdG9yZSBtX2xhYmVsU2NvcGVzOwotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gbV9sYXN0VmFyOwogICAgICAgICBpbnQgbV9maW5hbGx5RGVwdGg7CiAgICAgICAgIGludCBt
X2xvY2FsU2NvcGVEZXB0aDsKICAgICAgICAgQ29kZVR5cGUgbV9jb2RlVHlwZTsKQEAgLTc5MSw3
ICs3OTMsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVmVjdG9yPFRyeVJhbmdlPiBtX3Ry
eVJhbmdlczsKICAgICAgICAgU2VnbWVudGVkVmVjdG9yPFRyeURhdGEsIDg+IG1fdHJ5RGF0YTsK
IAotICAgICAgICBpbnQgbV9maXJzdENvbnN0YW50SW5kZXg7CiAgICAgICAgIGludCBtX25leHRD
b25zdGFudE9mZnNldDsKIAogICAgICAgICBpbnQgbV9maXJzdExhenlGdW5jdGlvbjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245971</attachid>
            <date>2015-02-03 15:07:21 -0800</date>
            <delta_ts>2015-02-04 08:57:39 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>5916</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc5NTcxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBA
CisyMDE1LTAyLTAzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
UmVtb3ZlIEJ5dGVjb2RlR2VuZXJhdG9yOjpwcmVzZXJ2ZUxhc3RWYXIoKSBhbmQgcmVwbGFjZSBp
dCB3aXRoIGEgbW9yZSByb2J1c3QgbWVjaGFuaXNtIGZvciBwcmVzZXJ2aW5nIG5vbi10ZW1wb3Jh
cnkgcmVnaXN0ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDEyMTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAg
ICAgCisgICAgICAgIFByZXZpb3VzbHksIHRoZSB3YXkgbm9uLXRlbXBvcmFyeSByZWdpc3RlcnMg
d2VyZSBwcmVzZXJ2ZWQgKGkuZS4gbm90IHJlY2xhaW1lZCBhbnl0aW1lCisgICAgICAgIHdlIGRp
ZCBuZXdUZW1wb3JhcnkoKSkgYnkgY2FsbGluZyBwcmVzZXJ2ZUxhc3RWYXIoKSBhZnRlciBhbGwg
bm9uLXRlbXBzIGFyZSBjcmVhdGVkLiBJdAorICAgICAgICB3b3VsZCByYWlzZSB0aGUgcmVmY291
bnQgb24gdGhlIGxhc3QgKGhpZ2hlc3QtbnVtYmVyZWQpIHZhcmlhYmxlIGNyZWF0ZWQsIGFuZCBy
ZWx5IG9uCisgICAgICAgIHRoZSBmYWN0IHRoYXQgcmVnaXN0ZXIgcmVjbGFtYXRpb24gc3RhcnRl
ZCBhdCBoaWdoZXItbnVtYmVyZWQgcmVnaXN0ZXJzIGFuZCB3b3JrZWQgaXRzCisgICAgICAgIHdh
eSBkb3duLiBTbyBhbnkgcmV0YWluZWQgcmVnaXN0ZXIgd291bGQgYmxvY2sgYW55IGxvd2VyLW51
bWJlcmVkIHJlZ2lzdGVycyBmcm9tIGJlaW5nCisgICAgICAgIHJlY2xhaW1lZC4KKyAgICAgICAg
CisgICAgICAgIEFsc28sIHByZXNlcnZlTGFzdFZhcigpIHNldHMgYSB0aGluZyBjYWxsZWQgbV9m
aXJzdENvbnN0YW50SW5kZXguIEl0J3MgdW51c2VkLgorICAgICAgICAKKyAgICAgICAgVGhpcyBy
ZW1vdmVzIHByZXNlcnZlTGFzdFZhcigpIGFuZCBtYWtlcyBhZGRWYXIoKSByZXRhaW4gZWFjaCBy
ZWdpc3RlciBpdCBjcmVhdGVzLiBUaGlzCisgICAgICAgIGlzIG1vcmUgZXhwbGljaXQsIHNpbmNl
IGFkZFZhcigpIGlzIHRoZSBtZWNoYW5pc20gZm9yIGNyZWF0aW5nIG5vbi10ZW1wb3JhcnkgcmVn
aXN0ZXJzLgorICAgICAgICAKKyAgICAgICAgQWxzbyByZW1vdmVzIHRoZSBsb2NhbEFyZ3VtZW50
c1JlZ2lzdGVyIGxvY2FsIHZhcmlhYmxlIGluIEJ5dGVjb2RlR2VuZXJhdG9yJ3MKKyAgICAgICAg
Y29uc3RydWN0b3IuIEl0J3Mgbm90IHVzZWQuCisKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0
ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6cHJlc2Vy
dmVMYXN0VmFyKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmFkZFZhcik6CisKIDIw
MTUtMDItMDMgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBBU1NFUlQgbWFpblRocmVhZFB0aHJlYWQgbGF1bmNoaW5nIHJlbW90
ZSBkZWJ1Z2dhYmxlIEpTQ29udGV4dCBhcHAgd2l0aCBEZWJ1ZyBKYXZhU2NyaXB0Q29yZQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDE3OTUzMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTEsMTIgKzE1MSw2IEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmFkZFZhcigKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6cHJlc2VydmVMYXN0VmFy
KCkKLXsKLSAgICBpZiAoKG1fZmlyc3RDb25zdGFudEluZGV4ID0gbV9jYWxsZWVSZWdpc3RlcnMu
c2l6ZSgpKSAhPSAwKQotICAgICAgICBtX2xhc3RWYXIgPSAmbV9jYWxsZWVSZWdpc3RlcnMubGFz
dCgpOwotfQotCiBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBQ
cm9ncmFtTm9kZSogcHJvZ3JhbU5vZGUsIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayogY29kZUJs
b2NrLCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2Rl
KQogICAgIDogbV9zaG91bGRFbWl0RGVidWdIb29rcyhPcHRpb25zOjpmb3JjZURlYnVnZ2VyQnl0
ZWNvZGVHZW5lcmF0aW9uKCkgfHwgZGVidWdnZXJNb2RlID09IERlYnVnZ2VyT24pCiAgICAgLCBt
X3Nob3VsZEVtaXRQcm9maWxlSG9va3MoT3B0aW9uczo6Zm9yY2VQcm9maWxlckJ5dGVjb2RlR2Vu
ZXJhdGlvbigpIHx8IHByb2ZpbGVyTW9kZSA9PSBQcm9maWxlck9uKQpAQCAtMjU4LDcgKzI1Miw2
IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYKICAgICAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXItPmluZGV4KCkp
OwogICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc2NvcGVSZWdpc3RlcigpLT5pbmRleCgp
KTsKICAgICB9Ci0gICAgUmVnaXN0ZXJJRCogbG9jYWxBcmd1bWVudHNSZWdpc3RlciA9IG51bGxw
dHI7CiAgICAgUmVnaXN0ZXJJRCogc2NyYXRjaCA9IGFkZFZhcigpOwogICAgIG1fc3ltYm9sVGFi
bGUtPnNldENhcHR1cmVTdGFydCh2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChtX2NvZGVCbG9jay0+
bV9udW1WYXJzKS5vZmZzZXQoKSk7CiAKQEAgLTI2Niw4ICsyNTksNiBAQCBCeXRlY29kZUdlbmVy
YXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mCiAgICAgICAgIFJlZ2lzdGVySUQqIHVubW9kaWZp
ZWRBcmd1bWVudHNSZWdpc3RlciA9IGFkZFZhcigpOyAvLyBBbm9ueW1vdXMsIHNvIGl0IGNhbid0
IGJlIG1vZGlmaWVkIGJ5IHVzZXIgY29kZS4KICAgICAgICAgUmVnaXN0ZXJJRCogYXJndW1lbnRz
UmVnaXN0ZXIgPSBhZGRWYXIocHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cywgSXNWYXJpYWJsZSwg
Tm90V2F0Y2hhYmxlKTsgLy8gQ2FuIGJlIGNoYW5nZWQgYnkgYXNzaWduaW5nIHRvICdhcmd1bWVu
dHMnLgogCi0gICAgICAgIGxvY2FsQXJndW1lbnRzUmVnaXN0ZXIgPSBhcmd1bWVudHNSZWdpc3Rl
cjsKLQogICAgICAgICAvLyBXZSBjYW4gc2F2ZSBhIGxpdHRsZSBzcGFjZSBieSBoYXJkLWNvZGlu
ZyB0aGUga25vd2xlZGdlIHRoYXQgdGhlIHR3bwogICAgICAgICAvLyAnYXJndW1lbnRzJyB2YWx1
ZXMgYXJlIHN0b3JlZCBpbiBjb25zZWN1dGl2ZSByZWdpc3RlcnMsIGFuZCBzdG9yaW5nCiAgICAg
ICAgIC8vIG9ubHkgdGhlIGluZGV4IG9mIHRoZSBhc3NpZ25hYmxlIG9uZS4KQEAgLTI5NCw3ICsy
ODUsNiBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mCiAgICAgICAg
ICAgICAgICAgICAgIGVtaXRPcGNvZGUob3BfbW92KTsKICAgICAgICAgICAgICAgICAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKHVuY2hlY2tlZEFyZ3VtZW50c1JlZ2lzdGVyLT5pbmRleCgpKTsK
ICAgICAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50VmFs
dWUoanNVbmRlZmluZWQoKSktPmluZGV4KCkpOwotICAgICAgICAgICAgICAgICAgICBsb2NhbEFy
Z3VtZW50c1JlZ2lzdGVyID0gbnVsbHB0cjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KQEAgLTQyOCw3ICs0MTgsNiBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0
ZWNvZGVHZW5lcmF0b3IoVk0mCiAgICAgICAgIH0KICAgICAgICAgYWRkUGFyYW1ldGVyKHNpbXBs
ZVBhcmFtZXRlci0+Ym91bmRQcm9wZXJ0eSgpLCBpbmRleCk7CiAgICAgfQotICAgIHByZXNlcnZl
TGFzdFZhcigpOwogCiAgICAgLy8gV2UgZGVjbGFyZSB0aGUgY2FsbGVlJ3MgbmFtZSBsYXN0IGJl
Y2F1c2UgaXQgc2hvdWxkIGxvc2UgdG8gYSB2YXIsIGZ1bmN0aW9uLCBhbmQvb3IgcGFyYW1ldGVy
IGRlY2xhcmF0aW9uLgogICAgIGFkZENhbGxlZShmdW5jdGlvbk5vZGUsIGNhbGxlZVJlZ2lzdGVy
KTsKQEAgLTQ5Myw3ICs0ODIsNiBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0
b3IoVk0mCiAgICAgICAgIHZhcmlhYmxlcy5hcHBlbmQodmFyU3RhY2tbaV0uZmlyc3QpOwogICAg
IH0KICAgICBjb2RlQmxvY2stPmFkb3B0VmFyaWFibGVzKHZhcmlhYmxlcyk7Ci0gICAgcHJlc2Vy
dmVMYXN0VmFyKCk7CiB9CiAKIEJ5dGVjb2RlR2VuZXJhdG9yOjp+Qnl0ZWNvZGVHZW5lcmF0b3Io
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaAkocmV2aXNpb24gMTc5NTMzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC02MzAsNyArNjMwLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBh
ZGRWYXIoKQogICAgICAgICB7CiAgICAgICAgICAgICArK21fY29kZUJsb2NrLT5tX251bVZhcnM7
Ci0gICAgICAgICAgICByZXR1cm4gbmV3UmVnaXN0ZXIoKTsKKyAgICAgICAgICAgIFJlZ2lzdGVy
SUQqIHJlc3VsdCA9IG5ld1JlZ2lzdGVyKCk7CisgICAgICAgICAgICBBU1NFUlQocmVzdWx0LT5p
bmRleCgpID09IG1fY29kZUJsb2NrLT5tX251bVZhcnMgLSAxKTsKKyAgICAgICAgICAgIHJlc3Vs
dC0+cmVmKCk7IC8vIFdlIHNob3VsZCBuZXZlciBmcmVlIHRoaXMgc2xvdC4KKyAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBSZXR1cm5zIHRoZSBpbmRl
eCBvZiB0aGUgYWRkZWQgdmFyLgpAQCAtNzc3LDcgKzc4MCw2IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBTZWdtZW50ZWRWZWN0b3I8UmVnaXN0ZXJJRCwgMzI+IG1fcGFyYW1ldGVyczsKICAg
ICAgICAgU2VnbWVudGVkVmVjdG9yPExhYmVsLCAzMj4gbV9sYWJlbHM7CiAgICAgICAgIExhYmVs
U2NvcGVTdG9yZSBtX2xhYmVsU2NvcGVzOwotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbV9s
YXN0VmFyOwogICAgICAgICBpbnQgbV9maW5hbGx5RGVwdGg7CiAgICAgICAgIGludCBtX2xvY2Fs
U2NvcGVEZXB0aDsKICAgICAgICAgQ29kZVR5cGUgbV9jb2RlVHlwZTsKQEAgLTc5MSw3ICs3OTMs
NiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVmVjdG9yPFRyeVJhbmdlPiBtX3RyeVJhbmdl
czsKICAgICAgICAgU2VnbWVudGVkVmVjdG9yPFRyeURhdGEsIDg+IG1fdHJ5RGF0YTsKIAotICAg
ICAgICBpbnQgbV9maXJzdENvbnN0YW50SW5kZXg7CiAgICAgICAgIGludCBtX25leHRDb25zdGFu
dE9mZnNldDsKIAogICAgICAgICBpbnQgbV9maXJzdExhenlGdW5jdGlvbjsK
</data>
<flag name="review"
          id="270900"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246035</attachid>
            <date>2015-02-04 08:57:39 -0800</date>
            <delta_ts>2015-02-04 09:43:29 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>5964</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc5NjAyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBA
CisyMDE1LTAyLTA0ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
UmVtb3ZlIEJ5dGVjb2RlR2VuZXJhdG9yOjpwcmVzZXJ2ZUxhc3RWYXIoKSBhbmQgcmVwbGFjZSBp
dCB3aXRoIGEgbW9yZSByb2J1c3QgbWVjaGFuaXNtIGZvciBwcmVzZXJ2aW5nIG5vbi10ZW1wb3Jh
cnkgcmVnaXN0ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDEyMTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBQcmV2aW91c2x5LCB0aGUgd2F5IG5vbi10ZW1wb3JhcnkgcmVnaXN0ZXJzIHdlcmUgcHJl
c2VydmVkIChpLmUuIG5vdCByZWNsYWltZWQgYW55dGltZQorICAgICAgICB3ZSBkaWQgbmV3VGVt
cG9yYXJ5KCkpIGJ5IGNhbGxpbmcgcHJlc2VydmVMYXN0VmFyKCkgYWZ0ZXIgYWxsIG5vbi10ZW1w
cyBhcmUgY3JlYXRlZC4gSXQKKyAgICAgICAgd291bGQgcmFpc2UgdGhlIHJlZmNvdW50IG9uIHRo
ZSBsYXN0IChoaWdoZXN0LW51bWJlcmVkKSB2YXJpYWJsZSBjcmVhdGVkLCBhbmQgcmVseSBvbgor
ICAgICAgICB0aGUgZmFjdCB0aGF0IHJlZ2lzdGVyIHJlY2xhbWF0aW9uIHN0YXJ0ZWQgYXQgaGln
aGVyLW51bWJlcmVkIHJlZ2lzdGVycyBhbmQgd29ya2VkIGl0cworICAgICAgICB3YXkgZG93bi4g
U28gYW55IHJldGFpbmVkIHJlZ2lzdGVyIHdvdWxkIGJsb2NrIGFueSBsb3dlci1udW1iZXJlZCBy
ZWdpc3RlcnMgZnJvbSBiZWluZworICAgICAgICByZWNsYWltZWQuCisgICAgICAgIAorICAgICAg
ICBBbHNvLCBwcmVzZXJ2ZUxhc3RWYXIoKSBzZXRzIGEgdGhpbmcgY2FsbGVkIG1fZmlyc3RDb25z
dGFudEluZGV4LiBJdCdzIHVudXNlZC4KKyAgICAgICAgCisgICAgICAgIFRoaXMgcmVtb3ZlcyBw
cmVzZXJ2ZUxhc3RWYXIoKSBhbmQgbWFrZXMgYWRkVmFyKCkgcmV0YWluIGVhY2ggcmVnaXN0ZXIg
aXQgY3JlYXRlcy4gVGhpcworICAgICAgICBpcyBtb3JlIGV4cGxpY2l0LCBzaW5jZSBhZGRWYXIo
KSBpcyB0aGUgbWVjaGFuaXNtIGZvciBjcmVhdGluZyBub24tdGVtcG9yYXJ5IHJlZ2lzdGVycy4K
KyAgICAgICAgCisgICAgICAgIFRvIG1ha2UgdGhpcyB3b3JrIEkgaGFkIHRvIHJlbW92ZSBhbiBh
c3NlcnRpb24gdGhhdCBSZWdpc3Rlcjo6c2V0SW5kZXgoKSBjYW4gb25seSBiZQorICAgICAgICBj
YWxsZWQgd2hlbiB0aGUgcmVmY291bnQgaXMgemVyby4gVGhpcyBtZXRob2QgbWlnaHQgYmUgY2Fs
bGVkIGFmdGVyIGEgdmFyIGlzIGNyZWF0ZWQgdG8KKyAgICAgICAgY2hhbmdlIGl0cyBpbmRleC4g
VGhpcyBwcmV2aW91c2x5IHdvcmtlZCBiZWNhdXNlIHByZXNlcnZlTGFzdFZhcigpIHdvdWxkIGJl
IGNhbGxlZCBhZnRlcgorICAgICAgICB3ZSBoYWQgYWxyZWFkeSBtYWRlIGFsbCBpbmRleCBjaGFu
Z2VzLCBzbyB0aGUgdmFycyB3b3VsZCBzdGlsbCBoYXZlIHJlZmNvdW50IHplcm8uIE5vdworICAg
ICAgICB0aGV5IGhhdmUgcmVmY291bnQgMS4gSSB0aGluayBpdCdzIE9LIHRvIGxvc2UgdGhpcyBh
c3NlcnRpb247IEkgY2FuJ3QgcmVtZW1iZXIgdGhpcworICAgICAgICBhc3NlcnRpb24gZXZlciBm
aXJpbmcgaW4gYSB3YXkgdGhhdCBhbGVydGVkIG1lIHRvIGEgc2VyaW91cyBpc3N1ZS4KKyAgICAg
ICAgCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnByZXNlcnZlTGFzdFZhcik6IERlbGV0ZWQuCisgICAg
ICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjphZGRWYXIpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9SZWdpc3Rl
cklELmg6CisgICAgICAgIChKU0M6OlJlZ2lzdGVySUQ6OnNldEluZGV4KToKKworMjAxNS0wMi0w
MyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQWxzbyByZW1vdmVzIHRoZSBsb2Nh
bEFyZ3VtZW50c1JlZ2lzdGVyIGxvY2FsIHZhcmlhYmxlIGluIEJ5dGVjb2RlR2VuZXJhdG9yJ3MK
KyAgICAgICAgY29uc3RydWN0b3IuIEl0J3Mgbm90IHVzZWQuCisKKyAgICAgICAgKiBieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6cHJlc2VydmVMYXN0VmFyKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmFkZFZh
cik6CisKIDIwMTUtMDItMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZGQgcmVtb3ZlRmlyc3QodmFsdWUpIC8gcmVtb3ZlQWxsKHZhbHVlKSBtZXRob2RzIHRv
IFdURjo6VmVjdG9yCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTc5NTMzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE1MSwxMiArMTUxLDYgQEAgYm9vbCBCeXRlY29kZUdlbmVyYXRv
cjo6YWRkVmFyKAogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEJ5dGVjb2RlR2VuZXJhdG9y
OjpwcmVzZXJ2ZUxhc3RWYXIoKQotewotICAgIGlmICgobV9maXJzdENvbnN0YW50SW5kZXggPSBt
X2NhbGxlZVJlZ2lzdGVycy5zaXplKCkpICE9IDApCi0gICAgICAgIG1fbGFzdFZhciA9ICZtX2Nh
bGxlZVJlZ2lzdGVycy5sYXN0KCk7Ci19Ci0KIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdl
bmVyYXRvcihWTSYgdm0sIFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9kZSwgVW5saW5rZWRQcm9ncmFt
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVy
TW9kZSBwcm9maWxlck1vZGUpCiAgICAgOiBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzKE9wdGlvbnM6
OmZvcmNlRGVidWdnZXJCeXRlY29kZUdlbmVyYXRpb24oKSB8fCBkZWJ1Z2dlck1vZGUgPT0gRGVi
dWdnZXJPbikKICAgICAsIG1fc2hvdWxkRW1pdFByb2ZpbGVIb29rcyhPcHRpb25zOjpmb3JjZVBy
b2ZpbGVyQnl0ZWNvZGVHZW5lcmF0aW9uKCkgfHwgcHJvZmlsZXJNb2RlID09IFByb2ZpbGVyT24p
CkBAIC00MjgsNyArNDIyLDYgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9y
KFZNJgogICAgICAgICB9CiAgICAgICAgIGFkZFBhcmFtZXRlcihzaW1wbGVQYXJhbWV0ZXItPmJv
dW5kUHJvcGVydHkoKSwgaW5kZXgpOwogICAgIH0KLSAgICBwcmVzZXJ2ZUxhc3RWYXIoKTsKIAog
ICAgIC8vIFdlIGRlY2xhcmUgdGhlIGNhbGxlZSdzIG5hbWUgbGFzdCBiZWNhdXNlIGl0IHNob3Vs
ZCBsb3NlIHRvIGEgdmFyLCBmdW5jdGlvbiwgYW5kL29yIHBhcmFtZXRlciBkZWNsYXJhdGlvbi4K
ICAgICBhZGRDYWxsZWUoZnVuY3Rpb25Ob2RlLCBjYWxsZWVSZWdpc3Rlcik7CkBAIC00OTMsNyAr
NDg2LDYgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJgogICAgICAg
ICB2YXJpYWJsZXMuYXBwZW5kKHZhclN0YWNrW2ldLmZpcnN0KTsKICAgICB9CiAgICAgY29kZUJs
b2NrLT5hZG9wdFZhcmlhYmxlcyh2YXJpYWJsZXMpOwotICAgIHByZXNlcnZlTGFzdFZhcigpOwog
fQogCiBCeXRlY29kZUdlbmVyYXRvcjo6fkJ5dGVjb2RlR2VuZXJhdG9yKCkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmgJKHJldmlzaW9uIDE3OTUzMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNjMwLDcgKzYzMCwx
MCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogYWRkVmFyKCkKICAgICAg
ICAgewogICAgICAgICAgICAgKyttX2NvZGVCbG9jay0+bV9udW1WYXJzOwotICAgICAgICAgICAg
cmV0dXJuIG5ld1JlZ2lzdGVyKCk7CisgICAgICAgICAgICBSZWdpc3RlcklEKiByZXN1bHQgPSBu
ZXdSZWdpc3RlcigpOworICAgICAgICAgICAgQVNTRVJUKFZpcnR1YWxSZWdpc3RlcihyZXN1bHQt
PmluZGV4KCkpLnRvTG9jYWwoKSA9PSBtX2NvZGVCbG9jay0+bV9udW1WYXJzIC0gMSk7CisgICAg
ICAgICAgICByZXN1bHQtPnJlZigpOyAvLyBXZSBzaG91bGQgbmV2ZXIgZnJlZSB0aGlzIHNsb3Qu
CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAKICAgICAgICAgLy8gUmV0
dXJucyB0aGUgaW5kZXggb2YgdGhlIGFkZGVkIHZhci4KQEAgLTc3Nyw3ICs3ODAsNiBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgU2VnbWVudGVkVmVjdG9yPFJlZ2lzdGVySUQsIDMyPiBtX3Bh
cmFtZXRlcnM7CiAgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxMYWJlbCwgMzI+IG1fbGFiZWxzOwog
ICAgICAgICBMYWJlbFNjb3BlU3RvcmUgbV9sYWJlbFNjb3BlczsKLSAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IG1fbGFzdFZhcjsKICAgICAgICAgaW50IG1fZmluYWxseURlcHRoOwogICAgICAg
ICBpbnQgbV9sb2NhbFNjb3BlRGVwdGg7CiAgICAgICAgIENvZGVUeXBlIG1fY29kZVR5cGU7CkBA
IC03OTEsNyArNzkzLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFZlY3RvcjxUcnlSYW5n
ZT4gbV90cnlSYW5nZXM7CiAgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxUcnlEYXRhLCA4PiBtX3Ry
eURhdGE7CiAKLSAgICAgICAgaW50IG1fZmlyc3RDb25zdGFudEluZGV4OwogICAgICAgICBpbnQg
bV9uZXh0Q29uc3RhbnRPZmZzZXQ7CiAKICAgICAgICAgaW50IG1fZmlyc3RMYXp5RnVuY3Rpb247
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL1JlZ2lzdGVySUQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL1JlZ2lzdGVy
SUQuaAkocmV2aXNpb24gMTc5NTMzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9SZWdpc3RlcklELmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDYgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBzZXRJbmRleChpbnQgaW5kZXgpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIEFTU0VSVCghbV9yZWZDb3VudCk7CiAjaWZuZGVmIE5ERUJVRwogICAgICAg
ICAgICAgbV9kaWRTZXRJbmRleCA9IHRydWU7CiAjZW5kaWYK
</data>
<flag name="review"
          id="270974"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>