<?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>147090</bug_id>
          
          <creation_ts>2015-07-19 10:51:41 -0700</creation_ts>
          <short_desc>Parser::parseFunctionInfo hits RELEASE_ASSERT for Arrow Functions</short_desc>
          <delta_ts>2015-07-19 12:32:56 -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>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="Saam Barati">saam</assigned_to>
          <cc>basile_clement</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1110496</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-07-19 10:51:41 -0700</bug_when>
    <thetext>This assertion hits: &quot;RELEASE_ASSERT(mode == NormalFunctionMode || mode == MethodMode);&quot;
because this is how we parse arrow functions:

template &lt;typename LexerType&gt;
template &lt;class TreeBuilder&gt; TreeExpression Parser&lt;LexerType&gt;::parseArrowFunctionExpression(TreeBuilder&amp; context)
{
    JSTokenLocation location;

    unsigned functionKeywordStart = tokenStart();
    location = tokenLocation();
    ParserFunctionInfo&lt;TreeBuilder&gt; info;
    info.name = &amp;m_vm-&gt;propertyNames-&gt;nullIdentifier;
    failIfFalse((parseFunctionInfo(context, FunctionNoRequirements, ArrowFunctionMode, true, ConstructorKind::None, SuperBinding::NotNeeded, functionKeywordStart, info, ArrowFunctionParseType)), &quot;Cannot parse arrow function expression&quot;);

    return context.createArrowFunctionExpr(location, info);
}

We need to remove this line from the function:
&quot;info.name = &amp;m_vm-&gt;propertyNames-&gt;nullIdentifier;&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110500</commentid>
    <comment_count>1</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-07-19 11:01:16 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; This assertion hits: &quot;RELEASE_ASSERT(mode == NormalFunctionMode || mode ==
&gt; MethodMode);&quot;
&gt; because this is how we parse arrow functions:
&gt; 
&gt; template &lt;typename LexerType&gt;
&gt; template &lt;class TreeBuilder&gt; TreeExpression
&gt; Parser&lt;LexerType&gt;::parseArrowFunctionExpression(TreeBuilder&amp; context)
&gt; {
&gt;     JSTokenLocation location;
&gt; 
&gt;     unsigned functionKeywordStart = tokenStart();
&gt;     location = tokenLocation();
&gt;     ParserFunctionInfo&lt;TreeBuilder&gt; info;
&gt;     info.name = &amp;m_vm-&gt;propertyNames-&gt;nullIdentifier;
&gt;     failIfFalse((parseFunctionInfo(context, FunctionNoRequirements,
&gt; ArrowFunctionMode, true, ConstructorKind::None, SuperBinding::NotNeeded,
&gt; functionKeywordStart, info, ArrowFunctionParseType)), &quot;Cannot parse arrow
&gt; function expression&quot;);
&gt; 
&gt;     return context.createArrowFunctionExpr(location, info);
&gt; }
&gt; 
&gt; We need to remove this line from the function:
&gt; &quot;info.name = &amp;m_vm-&gt;propertyNames-&gt;nullIdentifier;&quot;

This is a wrong assessment. We need to assign the nullIdentifier and allow 
the assert to not disqualify arrow functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110501</commentid>
    <comment_count>2</comment_count>
      <attachid>257063</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-07-19 11:13:27 -0700</bug_when>
    <thetext>Created attachment 257063
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110506</commentid>
    <comment_count>3</comment_count>
      <attachid>257063</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-07-19 11:42:05 -0700</bug_when>
    <thetext>Comment on attachment 257063
patch

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

r+

&gt; Source/JavaScriptCore/parser/Parser.cpp:1716
&gt;      if (functionScope-&gt;strictMode() &amp;&amp; functionInfo.name) {

Even arrow function has functionInfo.name (nullIdentifier).
We need to refactor the use cases for functionInfo.name&apos;s nullptr-ness.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110511</commentid>
    <comment_count>4</comment_count>
      <attachid>257063</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-19 12:32:53 -0700</bug_when>
    <thetext>Comment on attachment 257063
patch

Clearing flags on attachment: 257063

Committed r187014: &lt;http://trac.webkit.org/changeset/187014&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110512</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-19 12:32:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257063</attachid>
            <date>2015-07-19 11:13:27 -0700</date>
            <delta_ts>2015-07-19 12:32:53 -0700</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>4966</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg3MDEyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBA
CisyMDE1LTA3LTE5ICBTYWFtIGJhcmF0aSAgPHNhYW1iYXJhdGkxQGdtYWlsLmNvbT4KKworICAg
ICAgICBQYXJzZXI6OnBhcnNlRnVuY3Rpb25JbmZvIGhpdHMgUkVMRUFTRV9BU1NFUlQgZm9yIEFy
cm93IEZ1bmN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQ3MDkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQXJyb3dGdW5jdGlvbidzIGhhdmUgdGhlcmUgUGFyc2VyRnVuY3Rpb25JbmZvICJuYW1l
IiBmaWVsZCB0byAKKyAgICAgICAgYmUgYSBub24tbnVsbCBwb2ludGVyLiBUaGlzIGlzIG9idmlv
dXNseSBhbGxvd2VkIGFuZCB2YWxpZCBleGNlcHQgd2UgCisgICAgICAgIGhhZCBhIFJFTEVBU0Vf
QVNTRVJUIHRoYXQgY2xhaW1lZCBvdGhlcndpc2UuIFRoaXMgaXMgYSBtaXN0YWtlLiAKKworICAg
ICAgICBOb3RlOiBBcnJvd0Z1bmN0aW9uJ3Mgd2lsbCBuZXZlciBhY3R1YWxseSBoYXZlIGEgZnVu
Y3Rpb24gbmFtZTsKKyAgICAgICAgdGhlcmUgUGFyc2VyRnVuY3Rpb25JbmZvICJuYW1lIiBmaWVs
ZCB3aWxsIGJlIHRoZSBlbXB0eSBzdHJpbmcuIAorICAgICAgICBUaGlzIGlzIG5vdCBiZSBtaXN0
YWtlbiB3aXRoIHRoZSBuYW1lIGZpZWxkIGJlaW5nIGEgbnVsbCBwb2ludGVyLgorCisgICAgICAg
ICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZUZ1bmN0aW9uSW5mbyk6CisKIDIwMTUtMDctMTggIFNhYW0gYmFyYXRpICA8c2FhbWJhcmF0
aTFAZ21haWwuY29tPgogCiAgICAgICAgIFtFUzZdIEFkZCBzdXBwb3J0IGZvciBibG9jayBzY29w
ZSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAkocmV2
aXNpb24gMTg3MDEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNzE0LDcgKzE3MTQsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IGJvb2wgUGFyc2VyCiAgICAgZmFpbElmRmFsc2UoZnVuY3Rpb25JbmZvLmJvZHks
ICJDYW5ub3QgcGFyc2UgdGhlIGJvZHkgb2YgdGhpcyAiLCBzdHJpbmdGb3JGdW5jdGlvbk1vZGUo
bW9kZSkpOwogICAgIGNvbnRleHQuc2V0RW5kT2Zmc2V0KGZ1bmN0aW9uSW5mby5ib2R5LCBtX2xl
eGVyLT5jdXJyZW50T2Zmc2V0KCkpOwogICAgIGlmIChmdW5jdGlvblNjb3BlLT5zdHJpY3RNb2Rl
KCkgJiYgZnVuY3Rpb25JbmZvLm5hbWUpIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobW9kZSA9
PSBOb3JtYWxGdW5jdGlvbk1vZGUgfHwgbW9kZSA9PSBNZXRob2RNb2RlKTsKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQobW9kZSA9PSBOb3JtYWxGdW5jdGlvbk1vZGUgfHwgbW9kZSA9PSBNZXRob2RN
b2RlIHx8IG1vZGUgPT0gQXJyb3dGdW5jdGlvbk1vZGUpOwogICAgICAgICBzZW1hbnRpY0ZhaWxJ
ZlRydWUobV92bS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzID09ICpmdW5jdGlvbkluZm8ubmFt
ZSwgIiciLCBmdW5jdGlvbkluZm8ubmFtZS0+aW1wbCgpLCAiJyBpcyBub3QgYSB2YWxpZCBmdW5j
dGlvbiBuYW1lIGluIHN0cmljdCBtb2RlIik7CiAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSht
X3ZtLT5wcm9wZXJ0eU5hbWVzLT5ldmFsID09ICpmdW5jdGlvbkluZm8ubmFtZSwgIiciLCBmdW5j
dGlvbkluZm8ubmFtZS0+aW1wbCgpLCAiJyBpcyBub3QgYSB2YWxpZCBmdW5jdGlvbiBuYW1lIGlu
IHN0cmljdCBtb2RlIik7CiAgICAgfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTg3MDEyKQorKysgTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTUt
MDctMTkgIFNhYW0gYmFyYXRpICA8c2FhbWJhcmF0aTFAZ21haWwuY29tPgorCisgICAgICAgIFBh
cnNlcjo6cGFyc2VGdW5jdGlvbkluZm8gaGl0cyBSRUxFQVNFX0FTU0VSVCBmb3IgQXJyb3cgRnVu
Y3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDcwOTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGpzL2Fycm93ZnVuY3Rpb24tc3RyaWN0LW1vZGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBqcy9hcnJvd2Z1bmN0aW9uLXN0cmljdC1tb2RlLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGpzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXN0cmljdC1tb2RlLmpzOiBBZGRlZC4KKyAg
ICAgICAgKGZvbyk6CisKIDIwMTUtMDctMTggIFNhYW0gYmFyYXRpICA8c2FhbWJhcmF0aTFAZ21h
aWwuY29tPgogCiAgICAgICAgIFtFUzZdIEFkZCBzdXBwb3J0IGZvciBibG9jayBzY29wZSBjb25z
dApJbmRleDogTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1zdHJpY3QtbW9kZS1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1zdHJpY3Qt
bW9kZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9hcnJvd2Z1
bmN0aW9uLXN0cmljdC1tb2RlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDE3IEBACitUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uLCBtYWtlIHN1cmUgcGFyc2luZyBp
cyBPSyBpbiBzdHJpY3QgbW9kZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BB
U1MgZjEoMTApIGlzIDEwCitQQVNTIGYyKDIwKSBpcyAyMAorUEFTUyBmMygxMCwgMjApIGlzIDMw
CitQQVNTIGY0KDIwLCAyMCkgaXMgNDAKK1BBU1MgZm9vKHggPT4geCArIDEpIGlzIDExCitQQVNT
IGZvbygoeCkgPT4geCArIDEpIGlzIDExCitQQVNTIGZvbyh4ID0+IHsgcmV0dXJuIHggKyAxOyB9
KSBpcyAxMQorUEFTUyBmb28oKHgpID0+IHsgcmV0dXJuIHggKyAxOyB9KSBpcyAxMQorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91
dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tc3RyaWN0LW1vZGUuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXN0cmljdC1tb2RlLmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXN0cmljdC1tb2RlLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRG
Ly9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNy
Yz0ic2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tc3RyaWN0LW1vZGUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVu
Y3Rpb24tc3RyaWN0LW1vZGUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvc2NyaXB0
LXRlc3RzL2Fycm93ZnVuY3Rpb24tc3RyaWN0LW1vZGUuanMJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1zdHJpY3QtbW9kZS5qcwkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDI0IEBACisidXNlIHN0cmljdCI7CisKK2Rlc2NyaXB0aW9u
KCdUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uLCBtYWtlIHN1cmUgcGFyc2luZyBpcyBPSyBp
biBzdHJpY3QgbW9kZS4nKTsKKwordmFyIGYxID0geCA9PiB4Oworc2hvdWxkQmUoImYxKDEwKSIs
ICIxMCIpOworCit2YXIgZjIgPSAoeCkgPT4geDsKK3Nob3VsZEJlKCJmMigyMCkiLCAiMjAiKTsK
KwordmFyIGYzID0gKHgsIHkpID0+IHggKyB5Oworc2hvdWxkQmUoImYzKDEwLCAyMCkiLCAiMzAi
KTsKKwordmFyIGY0ID0gKHgsIHkpID0+IHsgcmV0dXJuIHggKyB5OyB9Oworc2hvdWxkQmUoImY0
KDIwLCAyMCkiLCAiNDAiKTsKKworZnVuY3Rpb24gZm9vKGYpIHsKKyAgICByZXR1cm4gZigxMCk7
Cit9CisKK3Nob3VsZEJlKCJmb28oeCA9PiB4ICsgMSkiLCAiMTEiKTsKK3Nob3VsZEJlKCJmb28o
KHgpID0+IHggKyAxKSIsICIxMSIpOworc2hvdWxkQmUoImZvbyh4ID0+IHsgcmV0dXJuIHggKyAx
OyB9KSIsICIxMSIpOworc2hvdWxkQmUoImZvbygoeCkgPT4geyByZXR1cm4geCArIDE7IH0pIiwg
IjExIik7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>