<?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>128890</bug_id>
          
          <creation_ts>2014-02-16 18:09:04 -0800</creation_ts>
          <short_desc>FTL OSR exit shouldn&apos;t make X86-specific assumptions</short_desc>
          <delta_ts>2014-02-17 10:54:16 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>112840</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>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>981310</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-16 18:09:04 -0800</bug_when>
    <thetext>FTL OSR exit shouldn&apos;t make X86-specific assumptions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981311</commentid>
    <comment_count>1</comment_count>
      <attachid>224326</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-16 18:10:27 -0800</bug_when>
    <thetext>Created attachment 224326
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981497</commentid>
    <comment_count>2</comment_count>
      <attachid>224326</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2014-02-17 09:18:11 -0800</bug_when>
    <thetext>Comment on attachment 224326
Patch

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

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:1469
&gt; +        RegisterID reg = getCachedDataTempRegisterIDAndInvalidate();
&gt; +        pushPair(reg, reg);
&gt; +        move(imm, reg);
&gt; +        store64(reg, stackPointerRegister);
&gt; +        load64(Address(stackPointerRegister, 8), reg);

Although the function name is descriptive, a comment that we use and then restore the contents of data temp register would be helpful.

&gt; Source/JavaScriptCore/ftl/FTLThunks.cpp:61
&gt; +    do {
&gt; +        jit.pushToSave(GPRInfo::regT0);
&gt; +        stackMisalignment += MacroAssembler::pushToSaveByteOffset();
&gt; +        numberOfRequiredPops++;
&gt; +    } while (stackMisalignment % stackAlignmentBytes());

Why do we need to actually &quot;push&quot;?  Can&apos;t we just calculate the amount we should move the stack pointer down by and do one subtract op?

&gt; Source/JavaScriptCore/ftl/FTLThunks.cpp:89
&gt; +        jit.popToRestore(GPRInfo::regT1);

Do we really need to pop or can we just do an add to the stack pointer?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981517</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-17 10:21:28 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 224326 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=224326&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:1469
&gt; &gt; +        RegisterID reg = getCachedDataTempRegisterIDAndInvalidate();
&gt; &gt; +        pushPair(reg, reg);
&gt; &gt; +        move(imm, reg);
&gt; &gt; +        store64(reg, stackPointerRegister);
&gt; &gt; +        load64(Address(stackPointerRegister, 8), reg);
&gt; 
&gt; Although the function name is descriptive, a comment that we use and then restore the contents of data temp register would be helpful.

I guess the better thing would be not to call the getCachedDataTempRegisterIDAndInvalidate() method at all and just use *any* register directly.

&gt; 
&gt; &gt; Source/JavaScriptCore/ftl/FTLThunks.cpp:61
&gt; &gt; +    do {
&gt; &gt; +        jit.pushToSave(GPRInfo::regT0);
&gt; &gt; +        stackMisalignment += MacroAssembler::pushToSaveByteOffset();
&gt; &gt; +        numberOfRequiredPops++;
&gt; &gt; +    } while (stackMisalignment % stackAlignmentBytes());
&gt; 
&gt; Why do we need to actually &quot;push&quot;?  Can&apos;t we just calculate the amount we should move the stack pointer down by and do one subtract op?

This loop does the calculation as well.  It&apos;s a trade-off.  On x86, pushes are cheaper; on ARM, stack arithmetic is cheaper.  I&apos;m going for preserving behavior on x86 for niow.

&gt; 
&gt; &gt; Source/JavaScriptCore/ftl/FTLThunks.cpp:89
&gt; &gt; +        jit.popToRestore(GPRInfo::regT1);
&gt; 
&gt; Do we really need to pop or can we just do an add to the stack pointer?

It&apos;s a trade-off.  On x86, the pops are cheaper.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981519</commentid>
    <comment_count>4</comment_count>
      <attachid>224393</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-17 10:26:24 -0800</bug_when>
    <thetext>Created attachment 224393
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981525</commentid>
    <comment_count>5</comment_count>
      <attachid>224393</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-02-17 10:35:20 -0800</bug_when>
    <thetext>Comment on attachment 224393
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981526</commentid>
    <comment_count>6</comment_count>
      <attachid>224393</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2014-02-17 10:36:26 -0800</bug_when>
    <thetext>Comment on attachment 224393
the patch

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

r=me

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:1465
&gt; +        RegisterID reg = dataTempRegister;

I don&apos;t have problems using getCachedDataTempRegisterIDAndInvalidate().  More grappling with how we push an immediate on ARM64. It just a little ugly that it takes a store pair, store, move multiple(s) and a load to push an immediate on ARM64 without impacting any GR.  I did a quick look for other alternatives, but did find any.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981537</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-17 10:54:16 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/164228</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224326</attachid>
            <date>2014-02-16 18:10:27 -0800</date>
            <delta_ts>2014-02-17 10:26:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-128890-20140216181024.patch</filename>
            <type>text/plain</type>
            <size>7464</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY0MjAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBA
CisyMDE0LTAyLTE2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
RlRMIE9TUiBleGl0IHNob3VsZG4ndCBtYWtlIFg4Ni1zcGVjaWZpYyBhc3N1bXB0aW9ucworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4ODkwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW9zdGx5IHRoaXMg
aXMgYWJvdXQgbm90IHVzaW5nIHB1c2gvcG9wLCBidXQgaW5zdGVhZCB1c2luZyB0aGUgbW9yZSBh
YnN0cmFjdCBwdXNoVG9TYXZlKCkgYW5kIHBvcFRvUmVzdG9yZSgpIHdoaWxlIHJlZmxlY3Rpbmcg
b24gdGhlIHN0YWNrIGFsaWdubWVudC4KKworICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlci5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6cHVzaFRvU2F2ZUltbWVkaWF0
ZVdpdGhvdXRUb3VjaGluZ1JlZ2lzdGVycyk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
OjpwdXNoVG9TYXZlQnl0ZU9mZnNldCk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6cHVzaFRvU2F2
ZUltbWVkaWF0ZVdpdGhvdXRUb3VjaGluZ1JlZ2lzdGVycyk6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyQVJNNjQ6OnB1c2hUb1NhdmVCeXRlT2Zmc2V0KToKKyAgICAgICAgKiBmdGwvRlRM
RXhpdFRodW5rR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpFeGl0VGh1bmtHZW5l
cmF0b3I6OmVtaXRUaHVuayk6CisgICAgICAgICogZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHA6
CisgICAgICAgIChKU0M6OkZUTDo6Y29tcGlsZVN0dWIpOgorICAgICAgICAqIGZ0bC9GVExUaHVu
a3MuY3BwOgorICAgICAgICAoSlNDOjpGVEw6Om9zckV4aXRHZW5lcmF0aW9uVGh1bmtHZW5lcmF0
b3IpOgorCiAyMDE0LTAyLTE1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAg
ICAgICAgVmVjdG9yIHdpdGggaW5saW5lIGNhcGFjaXR5IHNob3VsZCB3b3JrIHdpdGggbm9uLVBP
RHMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyLmgJKHJldmlzaW9uIDE2NDE5OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjU4LDYgKzI1OCwxMCBA
QCBwdWJsaWM6CiAgICAgewogICAgICAgICBwdXNoKHNyYyk7CiAgICAgfQorICAgIHZvaWQgcHVz
aFRvU2F2ZUltbWVkaWF0ZVdpdGhvdXRUb3VjaGluZ1JlZ2lzdGVycyhUcnVzdGVkSW1tMzIgaW1t
KQorICAgIHsKKyAgICAgICAgcHVzaChpbW0pOworICAgIH0KICAgICB2b2lkIHBvcFRvUmVzdG9y
ZShSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBwb3AoZGVzdCk7CkBAIC0yNzIsNiAr
Mjc2LDggQEAgcHVibGljOgogICAgICAgICBsb2FkRG91YmxlKHN0YWNrUG9pbnRlclJlZ2lzdGVy
LCBkZXN0KTsKICAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihzaXplb2YoZG91YmxlKSksIHN0
YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICB9CisgICAgCisgICAgc3RhdGljIHB0cmRpZmZfdCBw
dXNoVG9TYXZlQnl0ZU9mZnNldCgpIHsgcmV0dXJuIHNpemVvZih2b2lkKik7IH0KICNlbmRpZiAv
LyAhQ1BVKEFSTTY0KQogCiAjaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFS
TTY0LmgJKHJldmlzaW9uIDE2NDE5OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDU5LDYgKzE0NTks
MTUgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuc3RyPDY0PihzcmMsIEFS
TTY0UmVnaXN0ZXJzOjpzcCwgUHJlSW5kZXgoLTE2KSk7CiAgICAgfQorICAgIAorICAgIHZvaWQg
cHVzaFRvU2F2ZUltbWVkaWF0ZVdpdGhvdXRUb3VjaGluZ1JlZ2lzdGVycyhUcnVzdGVkSW1tMzIg
aW1tKQorICAgIHsKKyAgICAgICAgUmVnaXN0ZXJJRCByZWcgPSBnZXRDYWNoZWREYXRhVGVtcFJl
Z2lzdGVySURBbmRJbnZhbGlkYXRlKCk7CisgICAgICAgIHB1c2hQYWlyKHJlZywgcmVnKTsKKyAg
ICAgICAgbW92ZShpbW0sIHJlZyk7CisgICAgICAgIHN0b3JlNjQocmVnLCBzdGFja1BvaW50ZXJS
ZWdpc3Rlcik7CisgICAgICAgIGxvYWQ2NChBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCA4
KSwgcmVnKTsKKyAgICB9CiAKICAgICB2b2lkIHB1c2hUb1NhdmUoQWRkcmVzcyBhZGRyZXNzKQog
ICAgIHsKQEAgLTE0ODQsNiArMTQ5Myw3IEBAIHB1YmxpYzoKICAgICAgICAgc3RvcmVEb3VibGUo
c3JjLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgfQogCisgICAgc3RhdGljIHB0cmRpZmZf
dCBwdXNoVG9TYXZlQnl0ZU9mZnNldCgpIHsgcmV0dXJuIDE2OyB9CiAKICAgICAvLyBSZWdpc3Rl
ciBtb3ZlIG9wZXJhdGlvbnM6CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
RXhpdFRodW5rR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEV4aXRUaHVua0dlbmVyYXRvci5jcHAJKHJldmlzaW9uIDE2NDE5OCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRXhpdFRodW5rR2VuZXJhdG9yLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCB2b2lkIEV4aXRUaHVua0dlbmVyYXRvcjo6ZW1pdFRo
dW5rKHVuc2lnCiAgICAgT1NSRXhpdENvbXBpbGF0aW9uSW5mbyYgaW5mbyA9IG1fc3RhdGUuZmlu
YWxpemVyLT5vc3JFeGl0W2luZGV4XTsKICAgICAKICAgICBpbmZvLm1fdGh1bmtMYWJlbCA9IGxh
YmVsKCk7Ci0gICAgcHVzaChUcnVzdGVkSW1tMzIoaW5kZXgpKTsKKyAgICBwdXNoVG9TYXZlSW1t
ZWRpYXRlV2l0aG91dFRvdWNoaW5nUmVnaXN0ZXJzKFRydXN0ZWRJbW0zMihpbmRleCkpOwogICAg
IGluZm8ubV90aHVua0p1bXAgPSBwYXRjaGFibGVKdW1wKCk7CiAgICAgCiAgICAgbV9kaWRUaGlu
Z3MgPSB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29t
cGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NS
RXhpdENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTY0MTk4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCwxNCAr
NzAsMTQgQEAgc3RhdGljIHZvaWQgY29tcGlsZVN0dWIoCiAgICAgY2hhciogcmVnaXN0ZXJTY3Jh
dGNoID0gYml0d2lzZV9jYXN0PGNoYXIqPihzY3JhdGNoICsgZXhpdC5tX3ZhbHVlcy5zaXplKCkp
OwogICAgIHVpbnQ2NF90KiB1bndpbmRTY3JhdGNoID0gYml0d2lzZV9jYXN0PHVpbnQ2NF90Kj4o
cmVnaXN0ZXJTY3JhdGNoICsgcmVxdWlyZWRTY3JhdGNoTWVtb3J5U2l6ZUluQnl0ZXMoKSk7CiAg
ICAgCi0gICAgLy8gTWFrZSBzdXJlIHRoYXQgc2F2ZUFsbFJlZ2lzdGVycygpIGhhcyBhIHBsYWNl
IG9uIHRvcCBvZiB0aGUgc3RhY2sgdG8gc3BpbGwgdGhpbmdzLiBUaGF0Ci0gICAgLy8gZnVuY3Rp
b24gZXhwZWN0cyB0byBiZSBhYmxlIHRvIHVzZSB0b3Agb2Ygc3RhY2sgZm9yIHNjcmF0Y2ggbWVt
b3J5LgotICAgIGppdC5wdXNoKEdQUkluZm86OnJlZ1QwKTsKKyAgICAvLyBOb3RlIHRoYXQgd2Ug
Y29tZSBpbiBoZXJlLCB0aGUgc3RhY2sgdXNlZCB0byBiZSBhcyBMTFZNIGxlZnQgaXQgZXhjZXB0
IHRoYXQgc29tZW9uZSBjYWxsZWQgcHVzaFRvU2F2ZSgpLgorICAgIC8vIFdlIGRvbid0IGNhcmUg
YWJvdXQgdGhlIHZhbHVlIHRoZXkgc2F2ZWQuIEJ1dCwgd2UgZG8gYXBwcmVjaWF0ZSB0aGUgZmFj
dCB0aGF0IHRoZXkgZGlkIGl0LCBiZWNhdXNlIHdlIHVzZQorICAgIC8vIHRoYXQgc2xvdCBmb3Ig
c2F2ZUFsbFJlZ2lzdGVycygpLgorCiAgICAgc2F2ZUFsbFJlZ2lzdGVycyhqaXQsIHJlZ2lzdGVy
U2NyYXRjaCk7CiAgICAgCiAgICAgLy8gQnJpbmcgdGhlIHN0YWNrIGJhY2sgaW50byBhIHNhbmUg
Zm9ybS4KLSAgICBqaXQucG9wKEdQUkluZm86OnJlZ1QwKTsKLSAgICBqaXQucG9wKEdQUkluZm86
OnJlZ1QwKTsKKyAgICBqaXQucG9wVG9SZXN0b3JlKEdQUkluZm86OnJlZ1QwKTsKICAgICAKICAg
ICBpZiAodm0tPm1fcGVyQnl0ZWNvZGVQcm9maWxlciAmJiBjb2RlQmxvY2stPmppdENvZGUoKS0+
ZGZnQ29tbW9uKCktPmNvbXBpbGF0aW9uKSB7CiAgICAgICAgIFByb2ZpbGVyOjpEYXRhYmFzZSYg
ZGF0YWJhc2UgPSAqdm0tPm1fcGVyQnl0ZWNvZGVQcm9maWxlcjsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTFRodW5rcy5jcHAJKHJldmlzaW9uIDE2NDE5OCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTEg
KzQ1LDIwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBvc3JFeGl0R2VuZXJhdGlvblQKICAgICAK
ICAgICAvLyBOb3RlIHRoYXQgdGhlICJyZXR1cm4gYWRkcmVzcyIgd2lsbCBiZSB0aGUgT1NSIGV4
aXQgSUQuCiAgICAgCisgICAgcHRyZGlmZl90IHN0YWNrTWlzYWxpZ25tZW50ID0gTWFjcm9Bc3Nl
bWJsZXI6OnB1c2hUb1NhdmVCeXRlT2Zmc2V0KCk7CisgICAgCiAgICAgLy8gUHJldGVuZCB0aGF0
IHdlJ3JlIGEgQyBjYWxsIGZyYW1lLgotICAgIGppdC5wdXNoKE1hY3JvQXNzZW1ibGVyOjpmcmFt
ZVBvaW50ZXJSZWdpc3Rlcik7CisgICAgaml0LnB1c2hUb1NhdmUoTWFjcm9Bc3NlbWJsZXI6OmZy
YW1lUG9pbnRlclJlZ2lzdGVyKTsKICAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQ
b2ludGVyUmVnaXN0ZXIsIE1hY3JvQXNzZW1ibGVyOjpmcmFtZVBvaW50ZXJSZWdpc3Rlcik7Ci0g
ICAgaml0LnB1c2goR1BSSW5mbzo6cmVnVDApOwotICAgIGppdC5wdXNoKEdQUkluZm86OnJlZ1Qw
KTsKKyAgICBzdGFja01pc2FsaWdubWVudCArPSBNYWNyb0Fzc2VtYmxlcjo6cHVzaFRvU2F2ZUJ5
dGVPZmZzZXQoKTsKKyAgICAKKyAgICAvLyBOb3cgY3JlYXRlIG91cnNlbHZlcyBlbm91Z2ggc3Rh
Y2sgc3BhY2UgdG8gZ2l2ZSBzYXZlQWxsUmVnaXN0ZXJzKCkgYSBzY3JhdGNoIHNsb3QuCisgICAg
dW5zaWduZWQgbnVtYmVyT2ZSZXF1aXJlZFBvcHMgPSAwOworICAgIGRvIHsKKyAgICAgICAgaml0
LnB1c2hUb1NhdmUoR1BSSW5mbzo6cmVnVDApOworICAgICAgICBzdGFja01pc2FsaWdubWVudCAr
PSBNYWNyb0Fzc2VtYmxlcjo6cHVzaFRvU2F2ZUJ5dGVPZmZzZXQoKTsKKyAgICAgICAgbnVtYmVy
T2ZSZXF1aXJlZFBvcHMrKzsKKyAgICB9IHdoaWxlIChzdGFja01pc2FsaWdubWVudCAlIHN0YWNr
QWxpZ25tZW50Qnl0ZXMoKSk7CiAgICAgCiAgICAgU2NyYXRjaEJ1ZmZlciogc2NyYXRjaEJ1ZmZl
ciA9IHZtLT5zY3JhdGNoQnVmZmVyRm9yU2l6ZShyZXF1aXJlZFNjcmF0Y2hNZW1vcnlTaXplSW5C
eXRlcygpKTsKICAgICBjaGFyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxjaGFyKj4oc2NyYXRjaEJ1
ZmZlci0+ZGF0YUJ1ZmZlcigpKTsKQEAgLTYxLDcgKzcwLDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIG9zckV4aXRHZW5lcmF0aW9uVAogICAgIGppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihyZXF1aXJlZFNjcmF0Y2hNZW1vcnlTaXplSW5CeXRlcygpKSwgR1BSSW5m
bzo6bm9uQXJnR1BSMSk7CiAKICAgICBqaXQubG9hZFB0cihHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBqaXQucGVlayhHUFJJbmZvOjphcmd1
bWVudEdQUjEsIDMpOworICAgIGppdC5wZWVrKEdQUkluZm86OmFyZ3VtZW50R1BSMSwgKHN0YWNr
TWlzYWxpZ25tZW50IC8gc2l6ZW9mKHZvaWQqKSkgLSAxKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6
Q2FsbCBmdW5jdGlvbkNhbGwgPSBqaXQuY2FsbCgpOwogICAgIAogICAgIC8vIEF0IHRoaXMgcG9p
bnQgd2Ugd2FudCB0byBtYWtlIGEgdGFpbCBjYWxsIHRvIHdoYXQgd2FzIHJldHVybmVkIHRvIHVz
IGluIHRoZQpAQCAtNzYsOSArODUsOSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgb3NyRXhpdEdl
bmVyYXRpb25UCiAgICAgaml0LnN0b3JlUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KDApLCBHUFJJbmZvOjpyZWdUMSk7CiAgICAgCiAgICAgLy8gUHJlcGFyZSBmb3IgdGFpbCBjYWxs
LgotICAgIGppdC5wb3AoR1BSSW5mbzo6cmVnVDEpOwotICAgIGppdC5wb3AoR1BSSW5mbzo6cmVn
VDEpOwotICAgIGppdC5wb3AoTWFjcm9Bc3NlbWJsZXI6OmZyYW1lUG9pbnRlclJlZ2lzdGVyKTsK
KyAgICB3aGlsZSAobnVtYmVyT2ZSZXF1aXJlZFBvcHMtLSkKKyAgICAgICAgaml0LnBvcFRvUmVz
dG9yZShHUFJJbmZvOjpyZWdUMSk7CisgICAgaml0LnBvcFRvUmVzdG9yZShNYWNyb0Fzc2VtYmxl
cjo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIpOwogICAgIAogICAgIC8vIEF0IHRoaXMgcG9pbnQgd2Un
cmUgc2l0dGluZyBvbiB0aGUgcmV0dXJuIGFkZHJlc3MgLSBzbyBpZiB3ZSBkaWQgYSBqdW1wIHJp
Z2h0IG5vdywgdGhlCiAgICAgLy8gdGFpbC1jYWxsZWUgd291bGQgYmUgaGFwcHkuIEluc3RlYWQg
d2UnbGwgc3Rhc2ggdGhlIGNhbGxlZSBpbiB0aGUgcmV0dXJuIGFkZHJlc3MgYW5kIHRoZW4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224393</attachid>
            <date>2014-02-17 10:26:24 -0800</date>
            <delta_ts>2014-02-17 10:36:26 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>7428</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY0MjA3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBA
CisyMDE0LTAyLTE2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
RlRMIE9TUiBleGl0IHNob3VsZG4ndCBtYWtlIFg4Ni1zcGVjaWZpYyBhc3N1bXB0aW9ucworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4ODkwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW9zdGx5IHRoaXMg
aXMgYWJvdXQgbm90IHVzaW5nIHB1c2gvcG9wLCBidXQgaW5zdGVhZCB1c2luZyB0aGUgbW9yZSBh
YnN0cmFjdCBwdXNoVG9TYXZlKCkgYW5kIHBvcFRvUmVzdG9yZSgpIHdoaWxlIHJlZmxlY3Rpbmcg
b24gdGhlIHN0YWNrIGFsaWdubWVudC4KKworICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlci5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6cHVzaFRvU2F2ZUltbWVkaWF0
ZVdpdGhvdXRUb3VjaGluZ1JlZ2lzdGVycyk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
OjpwdXNoVG9TYXZlQnl0ZU9mZnNldCk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6cHVzaFRvU2F2
ZUltbWVkaWF0ZVdpdGhvdXRUb3VjaGluZ1JlZ2lzdGVycyk6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyQVJNNjQ6OnB1c2hUb1NhdmVCeXRlT2Zmc2V0KToKKyAgICAgICAgKiBmdGwvRlRM
RXhpdFRodW5rR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpFeGl0VGh1bmtHZW5l
cmF0b3I6OmVtaXRUaHVuayk6CisgICAgICAgICogZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHA6
CisgICAgICAgIChKU0M6OkZUTDo6Y29tcGlsZVN0dWIpOgorICAgICAgICAqIGZ0bC9GVExUaHVu
a3MuY3BwOgorICAgICAgICAoSlNDOjpGVEw6Om9zckV4aXRHZW5lcmF0aW9uVGh1bmtHZW5lcmF0
b3IpOgorCiAyMDE0LTAyLTE1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAg
ICAgICAgRlRMIHNob3VsZCBpbmxpbmUgcG9seW1vcnBoaWMgaGVhcCBhY2Nlc3NlcwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAko
cmV2aXNpb24gMTY0MjA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTgsNiArMjU4LDEwIEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgICAgIHB1c2goc3JjKTsKICAgICB9CisgICAgdm9pZCBwdXNoVG9TYXZlSW1t
ZWRpYXRlV2l0aG91dFRvdWNoaW5nUmVnaXN0ZXJzKFRydXN0ZWRJbW0zMiBpbW0pCisgICAgewor
ICAgICAgICBwdXNoKGltbSk7CisgICAgfQogICAgIHZvaWQgcG9wVG9SZXN0b3JlKFJlZ2lzdGVy
SUQgZGVzdCkKICAgICB7CiAgICAgICAgIHBvcChkZXN0KTsKQEAgLTI3Miw2ICsyNzYsOCBAQCBw
dWJsaWM6CiAgICAgICAgIGxvYWREb3VibGUoc3RhY2tQb2ludGVyUmVnaXN0ZXIsIGRlc3QpOwog
ICAgICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHNpemVvZihkb3VibGUpKSwgc3RhY2tQb2ludGVy
UmVnaXN0ZXIpOwogICAgIH0KKyAgICAKKyAgICBzdGF0aWMgcHRyZGlmZl90IHB1c2hUb1NhdmVC
eXRlT2Zmc2V0KCkgeyByZXR1cm4gc2l6ZW9mKHZvaWQqKTsgfQogI2VuZGlmIC8vICFDUFUoQVJN
NjQpCiAKICNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAkocmV2
aXNpb24gMTY0MjA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTTY0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NTksNiArMTQ1OSwxNSBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zdHI8NjQ+KHNyYywgQVJNNjRSZWdpc3Rl
cnM6OnNwLCBQcmVJbmRleCgtMTYpKTsKICAgICB9CisgICAgCisgICAgdm9pZCBwdXNoVG9TYXZl
SW1tZWRpYXRlV2l0aG91dFRvdWNoaW5nUmVnaXN0ZXJzKFRydXN0ZWRJbW0zMiBpbW0pCisgICAg
eworICAgICAgICBSZWdpc3RlcklEIHJlZyA9IGRhdGFUZW1wUmVnaXN0ZXI7CisgICAgICAgIHB1
c2hQYWlyKHJlZywgcmVnKTsKKyAgICAgICAgbW92ZShpbW0sIHJlZyk7CisgICAgICAgIHN0b3Jl
NjQocmVnLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgICAgIGxvYWQ2NChBZGRyZXNzKHN0
YWNrUG9pbnRlclJlZ2lzdGVyLCA4KSwgcmVnKTsKKyAgICB9CiAKICAgICB2b2lkIHB1c2hUb1Nh
dmUoQWRkcmVzcyBhZGRyZXNzKQogICAgIHsKQEAgLTE0ODQsNiArMTQ5Myw3IEBAIHB1YmxpYzoK
ICAgICAgICAgc3RvcmVEb3VibGUoc3JjLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgfQog
CisgICAgc3RhdGljIHB0cmRpZmZfdCBwdXNoVG9TYXZlQnl0ZU9mZnNldCgpIHsgcmV0dXJuIDE2
OyB9CiAKICAgICAvLyBSZWdpc3RlciBtb3ZlIG9wZXJhdGlvbnM6CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMRXhpdFRodW5rR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEV4aXRUaHVua0dlbmVyYXRvci5jcHAJKHJl
dmlzaW9uIDE2NDIwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRXhpdFRodW5r
R2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCB2b2lkIEV4aXRU
aHVua0dlbmVyYXRvcjo6ZW1pdFRodW5rKHVuc2lnCiAgICAgT1NSRXhpdENvbXBpbGF0aW9uSW5m
byYgaW5mbyA9IG1fc3RhdGUuZmluYWxpemVyLT5vc3JFeGl0W2luZGV4XTsKICAgICAKICAgICBp
bmZvLm1fdGh1bmtMYWJlbCA9IGxhYmVsKCk7Ci0gICAgcHVzaChUcnVzdGVkSW1tMzIoaW5kZXgp
KTsKKyAgICBwdXNoVG9TYXZlSW1tZWRpYXRlV2l0aG91dFRvdWNoaW5nUmVnaXN0ZXJzKFRydXN0
ZWRJbW0zMihpbmRleCkpOwogICAgIGluZm8ubV90aHVua0p1bXAgPSBwYXRjaGFibGVKdW1wKCk7
CiAgICAgCiAgICAgbV9kaWRUaGluZ3MgPSB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTY0MjA3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MCwxNCArNzAsMTQgQEAgc3RhdGljIHZvaWQgY29tcGlsZVN0dWIoCiAg
ICAgY2hhciogcmVnaXN0ZXJTY3JhdGNoID0gYml0d2lzZV9jYXN0PGNoYXIqPihzY3JhdGNoICsg
ZXhpdC5tX3ZhbHVlcy5zaXplKCkpOwogICAgIHVpbnQ2NF90KiB1bndpbmRTY3JhdGNoID0gYml0
d2lzZV9jYXN0PHVpbnQ2NF90Kj4ocmVnaXN0ZXJTY3JhdGNoICsgcmVxdWlyZWRTY3JhdGNoTWVt
b3J5U2l6ZUluQnl0ZXMoKSk7CiAgICAgCi0gICAgLy8gTWFrZSBzdXJlIHRoYXQgc2F2ZUFsbFJl
Z2lzdGVycygpIGhhcyBhIHBsYWNlIG9uIHRvcCBvZiB0aGUgc3RhY2sgdG8gc3BpbGwgdGhpbmdz
LiBUaGF0Ci0gICAgLy8gZnVuY3Rpb24gZXhwZWN0cyB0byBiZSBhYmxlIHRvIHVzZSB0b3Agb2Yg
c3RhY2sgZm9yIHNjcmF0Y2ggbWVtb3J5LgotICAgIGppdC5wdXNoKEdQUkluZm86OnJlZ1QwKTsK
KyAgICAvLyBOb3RlIHRoYXQgd2UgY29tZSBpbiBoZXJlLCB0aGUgc3RhY2sgdXNlZCB0byBiZSBh
cyBMTFZNIGxlZnQgaXQgZXhjZXB0IHRoYXQgc29tZW9uZSBjYWxsZWQgcHVzaFRvU2F2ZSgpLgor
ICAgIC8vIFdlIGRvbid0IGNhcmUgYWJvdXQgdGhlIHZhbHVlIHRoZXkgc2F2ZWQuIEJ1dCwgd2Ug
ZG8gYXBwcmVjaWF0ZSB0aGUgZmFjdCB0aGF0IHRoZXkgZGlkIGl0LCBiZWNhdXNlIHdlIHVzZQor
ICAgIC8vIHRoYXQgc2xvdCBmb3Igc2F2ZUFsbFJlZ2lzdGVycygpLgorCiAgICAgc2F2ZUFsbFJl
Z2lzdGVycyhqaXQsIHJlZ2lzdGVyU2NyYXRjaCk7CiAgICAgCiAgICAgLy8gQnJpbmcgdGhlIHN0
YWNrIGJhY2sgaW50byBhIHNhbmUgZm9ybS4KLSAgICBqaXQucG9wKEdQUkluZm86OnJlZ1QwKTsK
LSAgICBqaXQucG9wKEdQUkluZm86OnJlZ1QwKTsKKyAgICBqaXQucG9wVG9SZXN0b3JlKEdQUklu
Zm86OnJlZ1QwKTsKICAgICAKICAgICBpZiAodm0tPm1fcGVyQnl0ZWNvZGVQcm9maWxlciAmJiBj
b2RlQmxvY2stPmppdENvZGUoKS0+ZGZnQ29tbW9uKCktPmNvbXBpbGF0aW9uKSB7CiAgICAgICAg
IFByb2ZpbGVyOjpEYXRhYmFzZSYgZGF0YWJhc2UgPSAqdm0tPm1fcGVyQnl0ZWNvZGVQcm9maWxl
cjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5rcy5jcHAJKHJldmlzaW9u
IDE2NDIwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDUsMTEgKzQ1LDIwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBvc3JF
eGl0R2VuZXJhdGlvblQKICAgICAKICAgICAvLyBOb3RlIHRoYXQgdGhlICJyZXR1cm4gYWRkcmVz
cyIgd2lsbCBiZSB0aGUgT1NSIGV4aXQgSUQuCiAgICAgCisgICAgcHRyZGlmZl90IHN0YWNrTWlz
YWxpZ25tZW50ID0gTWFjcm9Bc3NlbWJsZXI6OnB1c2hUb1NhdmVCeXRlT2Zmc2V0KCk7CisgICAg
CiAgICAgLy8gUHJldGVuZCB0aGF0IHdlJ3JlIGEgQyBjYWxsIGZyYW1lLgotICAgIGppdC5wdXNo
KE1hY3JvQXNzZW1ibGVyOjpmcmFtZVBvaW50ZXJSZWdpc3Rlcik7CisgICAgaml0LnB1c2hUb1Nh
dmUoTWFjcm9Bc3NlbWJsZXI6OmZyYW1lUG9pbnRlclJlZ2lzdGVyKTsKICAgICBqaXQubW92ZShN
YWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIE1hY3JvQXNzZW1ibGVyOjpmcmFt
ZVBvaW50ZXJSZWdpc3Rlcik7Ci0gICAgaml0LnB1c2goR1BSSW5mbzo6cmVnVDApOwotICAgIGpp
dC5wdXNoKEdQUkluZm86OnJlZ1QwKTsKKyAgICBzdGFja01pc2FsaWdubWVudCArPSBNYWNyb0Fz
c2VtYmxlcjo6cHVzaFRvU2F2ZUJ5dGVPZmZzZXQoKTsKKyAgICAKKyAgICAvLyBOb3cgY3JlYXRl
IG91cnNlbHZlcyBlbm91Z2ggc3RhY2sgc3BhY2UgdG8gZ2l2ZSBzYXZlQWxsUmVnaXN0ZXJzKCkg
YSBzY3JhdGNoIHNsb3QuCisgICAgdW5zaWduZWQgbnVtYmVyT2ZSZXF1aXJlZFBvcHMgPSAwOwor
ICAgIGRvIHsKKyAgICAgICAgaml0LnB1c2hUb1NhdmUoR1BSSW5mbzo6cmVnVDApOworICAgICAg
ICBzdGFja01pc2FsaWdubWVudCArPSBNYWNyb0Fzc2VtYmxlcjo6cHVzaFRvU2F2ZUJ5dGVPZmZz
ZXQoKTsKKyAgICAgICAgbnVtYmVyT2ZSZXF1aXJlZFBvcHMrKzsKKyAgICB9IHdoaWxlIChzdGFj
a01pc2FsaWdubWVudCAlIHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSk7CiAgICAgCiAgICAgU2NyYXRj
aEJ1ZmZlciogc2NyYXRjaEJ1ZmZlciA9IHZtLT5zY3JhdGNoQnVmZmVyRm9yU2l6ZShyZXF1aXJl
ZFNjcmF0Y2hNZW1vcnlTaXplSW5CeXRlcygpKTsKICAgICBjaGFyKiBidWZmZXIgPSBzdGF0aWNf
Y2FzdDxjaGFyKj4oc2NyYXRjaEJ1ZmZlci0+ZGF0YUJ1ZmZlcigpKTsKQEAgLTYxLDcgKzcwLDcg
QEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckV4aXRHZW5lcmF0aW9uVAogICAgIGppdC5zdG9y
ZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihyZXF1aXJlZFNjcmF0Y2hNZW1vcnlT
aXplSW5CeXRlcygpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMSk7CiAKICAgICBqaXQubG9hZFB0cihH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBq
aXQucGVlayhHUFJJbmZvOjphcmd1bWVudEdQUjEsIDMpOworICAgIGppdC5wZWVrKEdQUkluZm86
OmFyZ3VtZW50R1BSMSwgKHN0YWNrTWlzYWxpZ25tZW50IC8gc2l6ZW9mKHZvaWQqKSkgLSAxKTsK
ICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBmdW5jdGlvbkNhbGwgPSBqaXQuY2FsbCgpOwogICAg
IAogICAgIC8vIEF0IHRoaXMgcG9pbnQgd2Ugd2FudCB0byBtYWtlIGEgdGFpbCBjYWxsIHRvIHdo
YXQgd2FzIHJldHVybmVkIHRvIHVzIGluIHRoZQpAQCAtNzYsOSArODUsOSBAQCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgb3NyRXhpdEdlbmVyYXRpb25UCiAgICAgaml0LnN0b3JlUHRyKE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKDApLCBHUFJJbmZvOjpyZWdUMSk7CiAgICAgCiAgICAgLy8g
UHJlcGFyZSBmb3IgdGFpbCBjYWxsLgotICAgIGppdC5wb3AoR1BSSW5mbzo6cmVnVDEpOwotICAg
IGppdC5wb3AoR1BSSW5mbzo6cmVnVDEpOwotICAgIGppdC5wb3AoTWFjcm9Bc3NlbWJsZXI6OmZy
YW1lUG9pbnRlclJlZ2lzdGVyKTsKKyAgICB3aGlsZSAobnVtYmVyT2ZSZXF1aXJlZFBvcHMtLSkK
KyAgICAgICAgaml0LnBvcFRvUmVzdG9yZShHUFJJbmZvOjpyZWdUMSk7CisgICAgaml0LnBvcFRv
UmVzdG9yZShNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIpOwogICAgIAogICAg
IC8vIEF0IHRoaXMgcG9pbnQgd2UncmUgc2l0dGluZyBvbiB0aGUgcmV0dXJuIGFkZHJlc3MgLSBz
byBpZiB3ZSBkaWQgYSBqdW1wIHJpZ2h0IG5vdywgdGhlCiAgICAgLy8gdGFpbC1jYWxsZWUgd291
bGQgYmUgaGFwcHkuIEluc3RlYWQgd2UnbGwgc3Rhc2ggdGhlIGNhbGxlZSBpbiB0aGUgcmV0dXJu
IGFkZHJlc3MgYW5kIHRoZW4K
</data>
<flag name="review"
          id="248482"
          type_id="1"
          status="+"
          setter="mhahnenberg"
    />
          </attachment>
      

    </bug>

</bugzilla>