<?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>105232</bug_id>
          
          <creation_ts>2012-12-17 17:11:01 -0800</creation_ts>
          <short_desc>Constant fold !{number} in the parser</short_desc>
          <delta_ts>2012-12-18 09:23:55 -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>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="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>793190</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-12-17 17:11:01 -0800</bug_when>
    <thetext>Constant fold !{number} in the parser</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793195</commentid>
    <comment_count>1</comment_count>
      <attachid>179839</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-12-17 17:18:10 -0800</bug_when>
    <thetext>Created attachment 179839
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793198</commentid>
    <comment_count>2</comment_count>
      <attachid>179839</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-12-17 17:21:49 -0800</bug_when>
    <thetext>Comment on attachment 179839
Patch

R=me

We should have the parser do more extensive constant folding.  It will reduce (a) reduce amount of bytecode, (b) reduce amount of baseline JIT machine code, and (c) reduce the amount of work that the DFG has to do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793382</commentid>
    <comment_count>3</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-12-17 22:55:50 -0800</bug_when>
    <thetext>Committed r137988: &lt;http://trac.webkit.org/changeset/137988&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793721</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-12-18 09:23:55 -0800</bug_when>
    <thetext>The comment makes it sound like you’d want to do this for other constant nodes such as NullNode, BooleanNode, StringNode, RegExpNode, ThisNode, and ArrayNode.

I’m assuming we don’t do that because the only cases that are actually common are !0 and !1, not, say !null or !true or !false. Since we’re already calling a virtual function just to find out it’s a number node it seems like we could do a version with more coverage. The only cost of this seems to be more code in Nodes.h/cpp.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179839</attachid>
            <date>2012-12-17 17:18:10 -0800</date>
            <delta_ts>2012-12-17 17:21:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105232-20121217171528.patch</filename>
            <type>text/plain</type>
            <size>2215</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM3OTYxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBA
CisyMDEyLTEyLTE3ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgQ29uc3RhbnQgZm9sZCAhe251bWJlcn0gaW4gdGhlIHBhcnNlcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1MjMyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVHlwaWNhbGx5LCB3ZSB3YWl0IGZvciBo
b3QgZXhlY3V0aW9uIGFuZCBjb25zdGFudCBmb2xkIGluIHRoZSBERkcuCisgICAgICAgIEhvd2V2
ZXIsICEwIGFuZCAhMSBhcmUgY29tbW9uIGVub3VnaCBpbiBtaW5pZmllcnMgdGhhdCBpdCBjYW4g
YmUgZ29vZAorICAgICAgICB0byBnZXQgdGhlbSBvdXQgb2YgdGhlIHdheSBlYXJseSwgZm9yIGZh
c3Rlci9zbWFsbGVyIHBhcnNpbmcgYW5kIHN0YXJ0dXAuCisKKyAgICAgICAgKiBwYXJzZXIvQVNU
QnVpbGRlci5oOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVMb2dpY2FsTm90KTog
IXtsaXRlcmFsfSBpcyBzdXBlciBzaW1wbGUsIGVzcGVjaWFsbHkKKyAgICAgICAgc2luY2UgdGhl
cmUncyBubyBsaXRlcmFsIGZvcm0gb2YgTmFOIG9yIEluZi4KKwogMjAxMi0xMi0xNyAgTWFyayBI
YWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgogCiAgICAgICAgIEJ1dHRlcmZseTo6
Z3Jvd0FycmF5UmlnaHQgc2hvdWxkbid0IGJlIGNhbGxlZCBvbiBudWxsIEJ1dHRlcmZseSBvYmpl
Y3RzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAkocmV2
aXNpb24gMTM3OTYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NSw3ICsxNDUsMTMgQEAgcHVibGljOgogICAgIEV4cHJl
c3Npb25Ob2RlKiBtYWtlUmlnaHRTaGlmdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhw
cmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fz
c2lnbm1lbnRzKTsKICAgICBFeHByZXNzaW9uTm9kZSogbWFrZVVSaWdodFNoaWZ0Tm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUq
IHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogCi0gICAgRXhwcmVzc2lvbk5vZGUq
IGNyZWF0ZUxvZ2ljYWxOb3QoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBMb2dpY2FsTm90Tm9k
ZShsb2NhdGlvbiwgZXhwcik7IH0KKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlTG9naWNhbE5v
dChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcikK
KyAgICB7CisgICAgICAgIGlmIChleHByLT5pc051bWJlcigpKQorICAgICAgICAgICAgcmV0dXJu
IGNyZWF0ZUJvb2xlYW4obG9jYXRpb24sICFzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcikt
PnZhbHVlKCkpOworCisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTG9naWNhbE5v
dE5vZGUobG9jYXRpb24sIGV4cHIpOworICAgIH0KICAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRl
VW5hcnlQbHVzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2Rl
KiBleHByKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgVW5hcnlQbHVzTm9kZShsb2NhdGlv
biwgZXhwcik7IH0KICAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlVm9pZChjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcikKICAgICB7Cg==
</data>
<flag name="review"
          id="196880"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>