<?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>168829</bug_id>
          
          <creation_ts>2017-02-24 01:30:11 -0800</creation_ts>
          <short_desc>Use of arguments in arrow function is slow</short_desc>
          <delta_ts>2017-02-28 12:59:34 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="GSkachkov">gskachkov</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>gskachkov</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1280736</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-02-24 01:30:11 -0800</bug_when>
    <thetext>fn = function() {
    var args = arguments;
    return () =&gt; args[0];
  }(1)

vs.

fn = function() {
    return () =&gt; arguments[0];
  }(1)

The first runs much faster than the second</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1280814</commentid>
    <comment_count>1</comment_count>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2017-02-24 11:53:46 -0800</bug_when>
    <thetext>I think this issue is related to mistake in calculation of the variable needsArguments in BytecodeGenerator.cpp. Using arguments in arrow function leads to emitting create_lexical_environment and create_direct_arguments twice, at first for wrapper function second for arrow function. 
I&apos;ll try to prepare fix during weekend</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1280846</commentid>
    <comment_count>2</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-02-24 13:41:14 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; I think this issue is related to mistake in calculation of the variable
&gt; needsArguments in BytecodeGenerator.cpp. Using arguments in arrow function
&gt; leads to emitting create_lexical_environment and create_direct_arguments
&gt; twice, at first for wrapper function second for arrow function. 
&gt; I&apos;ll try to prepare fix during weekend

Sounds good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281084</commentid>
    <comment_count>3</comment_count>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2017-02-25 12:00:17 -0800</bug_when>
    <thetext>I fixed issue with needsArguments and byte code looks the same except difference in type of variable and still difference in performance. Difference is type of variable during resolve scope in first example is ClosureVar and in second case is Dynamic. See bytecode for second cas:

[   0] enter             
[   1] get_scope         loc3
[   3] mov               loc4, loc3
[   6] create_lexical_environment loc5, loc3, Cell: 0x1081871a0 (0x1081e8a20:[SymbolTable, {}, NonArray, Leaf]), ID: 20(const0), Undefined(const1)
[  11] mov               loc3, loc5
[  14] create_direct_arguments loc6
[  16] put_to_scope      loc5, arguments(@id0), loc6, 2052&lt;ThrowIfNotFound|LocalClosureVar|NotInitialization&gt;, &lt;structure&gt;, 0
[  23] new_func_exp      loc8, loc3, f0
[  27] ret               loc8

Identifiers:
  id0 = arguments

Constants:
   k0 = Cell: 0x1081871a0 (0x1081e8a20:[SymbolTable, {}, NonArray, Leaf]), ID: 20
   k1 = Undefined

#A6UXLB:[0x108168520-&gt;0x1081b7020, NoneFunctionCall, 31 (NeverInline)]: 31 m_instructions; 248 bytes; 1 parameter(s); 10 callee register(s); 6 variable(s); scope at loc3
[   0] enter             
[   1] get_scope         loc3
[   3] mov               loc4, loc3
[   6] resolve_scope     loc7, loc3, arguments(@id0), &lt;DYNAMIC&gt;, 0, 0x0
[  13] get_from_scope    loc8, loc7, arguments(@id0), 2060&lt;ThrowIfNotFound| DYNAMIC |NotInitialization&gt;, 0    predicting None
[  21] get_by_val        loc6, loc8, Int32: 0(const0)    Original; predicting None
[  27] ret               loc6
[  29] ret               Undefined(const1) 

Is it possible fix this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281150</commentid>
    <comment_count>4</comment_count>
      <attachid>302789</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2017-02-26 13:18:48 -0800</bug_when>
    <thetext>Created attachment 302789
Patch

Patch for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281230</commentid>
    <comment_count>5</comment_count>
      <attachid>302789</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-02-26 18:46:14 -0800</bug_when>
    <thetext>Comment on attachment 302789
Patch

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

r=me.

&gt; Source/JavaScriptCore/ChangeLog:12
&gt; +        patch it can be ClosureVar, that increase performance of access to arguments variable
&gt; +        inside of the arrow function. 

How much faster is it now? Can you write that here.

&gt; Source/JavaScriptCore/runtime/JSScope.cpp:-55
&gt; -        if (ident == exec-&gt;propertyNames().arguments) {

Nice. This looks like old code to me that should no longer be needed.

&gt; JSTests/stress/arrowfunction-lexical-bind-arguments-non-strict-1.js:269
&gt; +var fn = function() {
&gt; +    return () =&gt; arguments[0];
&gt; +}(1);
&gt; +
&gt; +for (var i = 0; i &lt; 10000; i++) {
&gt; +    testCase(fn(2), 1); 
&gt; +}
&gt; +
&gt; +var fn = function() {
&gt; +    var args = arguments;
&gt; +    return () =&gt; args[0];
&gt; +}(1);
&gt; +
&gt; +for (var i = 0; i &lt; 10000; i++) {
&gt; +    testCase(fn(2), 1);
&gt; +}

Can you add these tests under the microbenchmarks directory?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281231</commentid>
    <comment_count>6</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-02-26 18:47:25 -0800</bug_when>
    <thetext>Can you also run the layout tests locally, or wait for EWS to come back online before landing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281851</commentid>
    <comment_count>7</comment_count>
      <attachid>302959</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2017-02-28 11:47:11 -0800</bug_when>
    <thetext>Created attachment 302959
Patch

Fix comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281890</commentid>
    <comment_count>8</comment_count>
      <attachid>302959</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-28 12:59:28 -0800</bug_when>
    <thetext>Comment on attachment 302959
Patch

Clearing flags on attachment: 302959

Committed r213165: &lt;http://trac.webkit.org/changeset/213165&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281892</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-28 12:59:34 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302789</attachid>
            <date>2017-02-26 13:18:48 -0800</date>
            <delta_ts>2017-02-28 11:47:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168829-20170226231553.patch</filename>
            <type>text/plain</type>
            <size>4802</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzMDExCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
OTRhZTRiODEyOGExYjYwNzE4ZjQ2MTY4YjhjOTNiODA4YjRkNDE0Li44NDViZWMzOWY4YWQxMjIy
ODVkNzVmZTNhYWI4NjYwNWI3MTU1YTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAxNy0wMi0yNiAgT2xla3NhbmRyIFNrYWNoa292ICA8Z3NrYWNoa292QGdt
YWlsLmNvbT4KKworICAgICAgICBVc2Ugb2YgYXJndW1lbnRzIGluIGFycm93IGZ1bmN0aW9uIGlz
IHNsb3cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
ODgyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1
cnJlbnQgcGF0Y2ggaW1wcm92ZXMgcGVyZm9ybWFuY2UgYWNjZXNzIHRvIGFyZ3VtZW50cyB3aXRo
aW4gYXJyb3cgZnVuY3R1aW9uCisgICAgICAgIGJ5IHByZXZlbnRpbmcgY3JlYXRlIGFyZ3VtZW50
cyB2YXJpYWJsZSB3aXRoaW4gYXJyb3cgZnVuY3Rpb24sIGFsc28gYWxsb3cgdG8gY2FjaGUgCisg
ICAgICAgIGFyZ3VtZW50cyB2YXJpYWJsZS4gQmVmb3JlIGFyZ3VtZW50cyB2YXJpYWJsZSBhbHdh
eXMgaGF2ZSBEeW5hbWljIHJlc29sdmUgdHlwZSwgYWZ0ZXIgCisgICAgICAgIHBhdGNoIGl0IGNh
biBiZSBDbG9zdXJlVmFyLCB0aGF0IGluY3JlYXNlIHBlcmZvcm1hbmNlIG9mIGFjY2VzcyB0byBh
cmd1bWVudHMgdmFyaWFibGUKKyAgICAgICAgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbi4g
CisKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNTY29wZS5jcHA6CisgICAgICAgIChKU0M6OmFic3RyYWN0QWNjZXNzKToKKwog
MjAxNy0wMi0yNCAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CiAKICAgICAgICAg
V2ViQXNzZW1ibHk6IG1pc2NlbGxhbmVvdXMgc3BlYyBmaXhlcwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRl
eCA1Mzg3NjdkMWQ2OGI4NTViMDZmYjE0MDA2MzIzY2E1NzE0ODJkNjM5Li4wN2ViMGYyZDY5Mzcy
MTY5MDFiMDczNTc3YjhkOTY5NmIxNDc5OTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMjcwLDcg
KzI3MCw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1
bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgYm9vbCBzaG91bGRDYXB0dXJl
U29tZU9mVGhlVGhpbmdzID0gbV9zaG91bGRFbWl0RGVidWdIb29rcyB8fCBmdW5jdGlvbk5vZGUt
Pm5lZWRzQWN0aXZhdGlvbigpIHx8IGNvbnRhaW5zQXJyb3dPckV2YWxCdXROb3RJbkFycm93Qmxv
Y2s7CiAKICAgICBib29sIHNob3VsZENhcHR1cmVBbGxPZlRoZVRoaW5ncyA9IG1fc2hvdWxkRW1p
dERlYnVnSG9va3MgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpOwotICAgIGJvb2wgbmVlZHNBcmd1
bWVudHMgPSAoZnVuY3Rpb25Ob2RlLT51c2VzQXJndW1lbnRzKCkgfHwgY29kZUJsb2NrLT51c2Vz
RXZhbCgpIHx8IChmdW5jdGlvbk5vZGUtPnVzZXNBcnJvd0Z1bmN0aW9uKCkgJiYgIWNvZGVCbG9j
ay0+aXNBcnJvd0Z1bmN0aW9uKCkgJiYgaXNBcmd1bWVudHNVc2VkSW5Jbm5lckFycm93RnVuY3Rp
b24oKSkpOworICAgIGJvb2wgbmVlZHNBcmd1bWVudHMgPSAoKGZ1bmN0aW9uTm9kZS0+dXNlc0Fy
Z3VtZW50cygpICYmICFjb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlvbigpKSB8fCBjb2RlQmxvY2st
PnVzZXNFdmFsKCkgfHwgKGZ1bmN0aW9uTm9kZS0+dXNlc0Fycm93RnVuY3Rpb24oKSAmJiAhY29k
ZUJsb2NrLT5pc0Fycm93RnVuY3Rpb24oKSAmJiBpc0FyZ3VtZW50c1VzZWRJbklubmVyQXJyb3dG
dW5jdGlvbigpKSk7CiAKICAgICBpZiAoaXNHZW5lcmF0b3JPckFzeW5jRnVuY3Rpb25Cb2R5UGFy
c2VNb2RlKHBhcnNlTW9kZSkpIHsKICAgICAgICAgLy8gR2VuZXJhdG9yIGFuZCBBc3luY0Z1bmN0
aW9uIG5ldmVyIHByb3ZpZGVzICJhcmd1bWVudHMiLiAiYXJndW1lbnRzIiByZWZlcmVuY2Ugd2ls
bCBiZSByZXNvbHZlZCBpbiBhbiB1cHBlciBnZW5lcmF0b3IgZnVuY3Rpb24gc2NvcGUuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCmluZGV4IGVmMWFkZTFjNjc3NTU3
ODU0MTFkNWE1Y2EwOWIxZDUxM2IzMmJmMzkuLmU1NWJmYjcxOTUyZmQwODdhOWVkYWI4ZmRkOGVl
Y2RhNmY5ZDlhZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U2NvcGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3Bw
CkBAIC01MiwxMSArNTIsNiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYWJzdHJhY3RBY2Nlc3MoRXhl
Y1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgY29uc3QgSWRlbnRpZgogewogICAgIGlmIChz
Y29wZS0+aXNKU0xleGljYWxFbnZpcm9ubWVudCgpKSB7CiAgICAgICAgIEpTTGV4aWNhbEVudmly
b25tZW50KiBsZXhpY2FsRW52aXJvbm1lbnQgPSBqc0Nhc3Q8SlNMZXhpY2FsRW52aXJvbm1lbnQq
PihzY29wZSk7Ci0gICAgICAgIGlmIChpZGVudCA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYXJn
dW1lbnRzKSB7Ci0gICAgICAgICAgICAvLyBXZSBrbm93IHRoZSBwcm9wZXJ0eSB3aWxsIGJlIGF0
IHRoaXMgbGV4aWNhbCBlbnZpcm9ubWVudCBzY29wZSwgYnV0IHdlIGRvbid0IGtub3cgaG93IHRv
IGNhY2hlIGl0LgotICAgICAgICAgICAgb3AgPSBSZXNvbHZlT3AoRHluYW1pYywgMCwgMCwgMCwg
MCwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQogCiAgICAgICAgIFN5
bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9IGxleGljYWxFbnZpcm9ubWVudC0+c3ltYm9sVGFibGUo
KTsKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0No
YW5nZUxvZwppbmRleCA1NDI0ZGE4ZjExZDJlZTBkYTAwY2ViYjhkMzNmNTYyNjA0NGZhODZhLi4x
ZTA5MTNmNjc1ZGFjMjVlZmNhZThmNmI0ZDc2MDc3Yjc4YzkzM2YzIDEwMDY0NAotLS0gYS9KU1Rl
c3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisy
MDE3LTAyLTI2ICBPbGVrc2FuZHIgU2thY2hrb3YgIDxnc2thY2hrb3ZAZ21haWwuY29tPgorCisg
ICAgICAgIFVzZSBvZiBhcmd1bWVudHMgaW4gYXJyb3cgZnVuY3Rpb24gaXMgc2xvdworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY4ODI5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvYXJyb3dm
dW5jdGlvbi1sZXhpY2FsLWJpbmQtYXJndW1lbnRzLW5vbi1zdHJpY3QtMS5qczoKKyAgICAgICAg
KGZuKToKKwogMjAxNy0wMi0yNCAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgV2ViQXNzZW1ibHk6IG1pc2NlbGxhbmVvdXMgc3BlYyBmaXhlcwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtYXJndW1lbnRzLW5v
bi1zdHJpY3QtMS5qcyBiL0pTVGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5k
LWFyZ3VtZW50cy1ub24tc3RyaWN0LTEuanMKaW5kZXggYmI4YmE3YTcyYjFjMjllZTM5NzdmNmQx
YTAzNmE2ZDI3OGE4OWIzMC4uZTY4ZTI1MTVmYTY1MTI0YmY2NmM1ZmI2YWVhYmE0MDA1NDk0NTk1
MCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQt
YXJndW1lbnRzLW5vbi1zdHJpY3QtMS5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0
aW9uLWxleGljYWwtYmluZC1hcmd1bWVudHMtbm9uLXN0cmljdC0xLmpzCkBAIC0yNTAsMyArMjUw
LDIwIEBAIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgewogICAgIGxldCB2ID0gZl9h
cmdzX2V2YWwodGVzdFZhbHVlLCAnYW5vdGhlclZhbHVlJykoKSgpKCk7CiAgICAgdGVzdENhc2Uo
diwgdGVzdFZhbHVlKTsKIH0KKwordmFyIGZuID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuICgp
ID0+IGFyZ3VtZW50c1swXTsKK30oMSk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkr
KykgeworICAgIHRlc3RDYXNlKGZuKDIpLCAxKTsgCit9CisKK3ZhciBmbiA9IGZ1bmN0aW9uKCkg
eworICAgIHZhciBhcmdzID0gYXJndW1lbnRzOworICAgIHJldHVybiAoKSA9PiBhcmdzWzBdOwor
fSgxKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgdGVzdENhc2Uo
Zm4oMiksIDEpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302959</attachid>
            <date>2017-02-28 11:47:11 -0800</date>
            <delta_ts>2017-02-28 12:59:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168829-20170228214412.patch</filename>
            <type>text/plain</type>
            <size>5088</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzMDExCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
OTRhZTRiODEyOGExYjYwNzE4ZjQ2MTY4YjhjOTNiODA4YjRkNDE0Li4wZGFkNTZmNmMxNDg2NjM3
NjExOGM0OGYyMWZiZmRmNzM2ODg5NzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAxNy0wMi0yOCAgT2xla3NhbmRyIFNrYWNoa292ICA8Z3NrYWNoa292QGdt
YWlsLmNvbT4KKworICAgICAgICBVc2Ugb2YgYXJndW1lbnRzIGluIGFycm93IGZ1bmN0aW9uIGlz
IHNsb3cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
ODgyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1
cnJlbnQgcGF0Y2ggaW1wcm92ZXMgcGVyZm9ybWFuY2UgYWNjZXNzIHRvIGFyZ3VtZW50cyB3aXRo
aW4gYXJyb3cgZnVuY3R1aW9uCisgICAgICAgIGJ5IHByZXZlbnRpbmcgY3JlYXRlIGFyZ3VtZW50
cyB2YXJpYWJsZSB3aXRoaW4gYXJyb3cgZnVuY3Rpb24sIGFsc28gYWxsb3cgdG8gY2FjaGUgCisg
ICAgICAgIGFyZ3VtZW50cyB2YXJpYWJsZS4gQmVmb3JlIGFyZ3VtZW50cyB2YXJpYWJsZSBhbHdh
eXMgaGF2ZSBEeW5hbWljIHJlc29sdmUgdHlwZSwgYWZ0ZXIgCisgICAgICAgIHBhdGNoIGl0IGNh
biBiZSBDbG9zdXJlVmFyLCB0aGF0IGluY3JlYXNlIHBlcmZvcm1hbmNlIG9mIGFjY2VzcyB0byBh
cmd1bWVudHMgdmFyaWFibGUKKyAgICAgICAgaW4gOSB0aW1lcyBpbnNpZGUgb2YgdGhlIGFycm93
IGZ1bmN0aW9uLiAKKworICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6
CisgICAgICAgICogcnVudGltZS9KU1Njb3BlLmNwcDoKKyAgICAgICAgKEpTQzo6YWJzdHJhY3RB
Y2Nlc3MpOgorCiAyMDE3LTAyLTI0ICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4K
IAogICAgICAgICBXZWJBc3NlbWJseTogbWlzY2VsbGFuZW91cyBzcGVjIGZpeGVzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCmluZGV4IDUzODc2N2QxZDY4Yjg1NWIwNmZiMTQwMDYzMjNjYTU3MTQ4MmQ2MzkuLjA3
ZWIwZjJkNjkzNzIxNjkwMWIwNzM1NzdiOGQ5Njk2YjE0Nzk5M2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CkBAIC0yNzAsNyArMjcwLDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9y
KFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICBib29sIHNo
b3VsZENhcHR1cmVTb21lT2ZUaGVUaGluZ3MgPSBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzIHx8IGZ1
bmN0aW9uTm9kZS0+bmVlZHNBY3RpdmF0aW9uKCkgfHwgY29udGFpbnNBcnJvd09yRXZhbEJ1dE5v
dEluQXJyb3dCbG9jazsKIAogICAgIGJvb2wgc2hvdWxkQ2FwdHVyZUFsbE9mVGhlVGhpbmdzID0g
bV9zaG91bGRFbWl0RGVidWdIb29rcyB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCk7Ci0gICAgYm9v
bCBuZWVkc0FyZ3VtZW50cyA9IChmdW5jdGlvbk5vZGUtPnVzZXNBcmd1bWVudHMoKSB8fCBjb2Rl
QmxvY2stPnVzZXNFdmFsKCkgfHwgKGZ1bmN0aW9uTm9kZS0+dXNlc0Fycm93RnVuY3Rpb24oKSAm
JiAhY29kZUJsb2NrLT5pc0Fycm93RnVuY3Rpb24oKSAmJiBpc0FyZ3VtZW50c1VzZWRJbklubmVy
QXJyb3dGdW5jdGlvbigpKSk7CisgICAgYm9vbCBuZWVkc0FyZ3VtZW50cyA9ICgoZnVuY3Rpb25O
b2RlLT51c2VzQXJndW1lbnRzKCkgJiYgIWNvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9uKCkpIHx8
IGNvZGVCbG9jay0+dXNlc0V2YWwoKSB8fCAoZnVuY3Rpb25Ob2RlLT51c2VzQXJyb3dGdW5jdGlv
bigpICYmICFjb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlvbigpICYmIGlzQXJndW1lbnRzVXNlZElu
SW5uZXJBcnJvd0Z1bmN0aW9uKCkpKTsKIAogICAgIGlmIChpc0dlbmVyYXRvck9yQXN5bmNGdW5j
dGlvbkJvZHlQYXJzZU1vZGUocGFyc2VNb2RlKSkgewogICAgICAgICAvLyBHZW5lcmF0b3IgYW5k
IEFzeW5jRnVuY3Rpb24gbmV2ZXIgcHJvdmlkZXMgImFyZ3VtZW50cyIuICJhcmd1bWVudHMiIHJl
ZmVyZW5jZSB3aWxsIGJlIHJlc29sdmVkIGluIGFuIHVwcGVyIGdlbmVyYXRvciBmdW5jdGlvbiBz
Y29wZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKaW5kZXggZWYx
YWRlMWM2Nzc1NTc4NTQxMWQ1YTVjYTA5YjFkNTEzYjMyYmYzOS4uZTU1YmZiNzE5NTJmZDA4N2E5
ZWRhYjhmZGQ4ZWVjZGE2ZjlkOWFlNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTY29wZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTY29wZS5jcHAKQEAgLTUyLDExICs1Miw2IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBhYnN0cmFj
dEFjY2VzcyhFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBjb25zdCBJZGVudGlmCiB7
CiAgICAgaWYgKHNjb3BlLT5pc0pTTGV4aWNhbEVudmlyb25tZW50KCkpIHsKICAgICAgICAgSlNM
ZXhpY2FsRW52aXJvbm1lbnQqIGxleGljYWxFbnZpcm9ubWVudCA9IGpzQ2FzdDxKU0xleGljYWxF
bnZpcm9ubWVudCo+KHNjb3BlKTsKLSAgICAgICAgaWYgKGlkZW50ID09IGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5hcmd1bWVudHMpIHsKLSAgICAgICAgICAgIC8vIFdlIGtub3cgdGhlIHByb3BlcnR5
IHdpbGwgYmUgYXQgdGhpcyBsZXhpY2FsIGVudmlyb25tZW50IHNjb3BlLCBidXQgd2UgZG9uJ3Qg
a25vdyBob3cgdG8gY2FjaGUgaXQuCi0gICAgICAgICAgICBvcCA9IFJlc29sdmVPcChEeW5hbWlj
LCAwLCAwLCAwLCAwLCAwKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9CiAK
ICAgICAgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlID0gbGV4aWNhbEVudmlyb25tZW50LT5z
eW1ib2xUYWJsZSgpOwogICAgICAgICB7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBi
L0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDU0MjRkYThmMTFkMmVlMGRhMDBjZWJiOGQzM2Y1NjI2
MDQ0ZmE4NmEuLjY3ZjdkMjMyZTBlZjZlNThhNDViMDk1MGRjZWUzZTk3YjhlMWM0ZjIgMTAwNjQ0
Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTUgQEAKKzIwMTctMDItMjggIE9sZWtzYW5kciBTa2FjaGtvdiAgPGdza2FjaGtvdkBnbWFp
bC5jb20+CisKKyAgICAgICAgVXNlIG9mIGFyZ3VtZW50cyBpbiBhcnJvdyBmdW5jdGlvbiBpcyBz
bG93CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjg4
MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1p
Y3JvYmVuY2htYXJrcy9hcnJvd2Z1bmNpdG9uLWRpcmVjdC1hcmd1bWVudHMuanM6IEFkZGVkLgor
ICAgICAgICAoZm4pOgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9hcnJvd2Z1bmNpdG9uLXJl
ZmVyZW5jZS1hcmd1bWVudHMuanM6IEFkZGVkLgorICAgICAgICAoZm4pOgorCiAyMDE3LTAyLTI0
ICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJBc3NlbWJs
eTogbWlzY2VsbGFuZW91cyBzcGVjIGZpeGVzCmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVu
Y2htYXJrcy9hcnJvd2Z1bmNpdG9uLWRpcmVjdC1hcmd1bWVudHMuanMgYi9KU1Rlc3RzL21pY3Jv
YmVuY2htYXJrcy9hcnJvd2Z1bmNpdG9uLWRpcmVjdC1hcmd1bWVudHMuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTM4OTAzMTk4MjgyYmY2YjMwNWMyNmIxMzFjNzhiMjMxN2U5ODk2NgotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2Fycm93ZnVuY2l0b24tZGlyZWN0LWFyZ3VtZW50
cy5qcwpAQCAtMCwwICsxLDcgQEAKK3ZhciBmbiA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiAo
KSA9PiBhcmd1bWVudHNbMF07Cit9KDEpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsg
aSsrKSB7CisgICAgaWYoZm4oMikgIT09IDEpIHRocm93IDA7IAorfQpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9taWNyb2JlbmNobWFya3MvYXJyb3dmdW5jaXRvbi1yZWZlcmVuY2UtYXJndW1lbnRzLmpz
IGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvYXJyb3dmdW5jaXRvbi1yZWZlcmVuY2UtYXJndW1l
bnRzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjI3M2JkZjkxOGRhOGZjM2E4ZDgwZTM2MDc2OTQxOTEzY2NlMTM3
ODQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9hcnJvd2Z1bmNp
dG9uLXJlZmVyZW5jZS1hcmd1bWVudHMuanMKQEAgLTAsMCArMSwxMCBAQAordmFyIGZuID0gZnVu
Y3Rpb24oKSB7CisgICAgdmFyIGFyZ3MgPSBhcmd1bWVudHM7CisgICAgcmV0dXJuICgpID0+IGFy
Z3NbMF07Cit9KDEpOworCitub0lubGluZShmbik7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAw
MDA7IGkrKykgeworICAgIGlmKGZuKDIpICE9PSAxKSB0aHJvdyAwOworfQpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
      

    </bug>

</bugzilla>