<?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>82312</bug_id>
          
          <creation_ts>2012-03-27 02:13:08 -0700</creation_ts>
          <short_desc>DFG OSR exit should not generate an exit for variables of inlinees if the inlinees are not in scope</short_desc>
          <delta_ts>2012-03-27 14:55:01 -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>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>eric</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>588667</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-03-27 02:13:08 -0700</bug_when>
    <thetext>Currently DFG OSR exit computes a value recovery, and generates recovery code, for every variable within the DFG code block&apos;s Graph::m_localVars, which ends up being the high watermark of the stack for all inlinees.  This means that for example in this code:


function foo(a, b) {
    return a + b;
}

function bar(a, b, c) {
    var x = foo(a, b);
    return x + c.f;
}

If we OSR exit at c.f, then the exit will include code to restore local variables within foo(), which is clearly redundant since foo() is out of scope at that point.

Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588673</commentid>
    <comment_count>1</comment_count>
      <attachid>134007</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-03-27 02:18:16 -0700</bug_when>
    <thetext>Created attachment 134007
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589152</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-03-27 12:36:40 -0700</bug_when>
    <thetext>Attachment 134007 was posted by a committer and has review+, assigning to Filip Pizlo for commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589318</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-03-27 14:55:01 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/112320</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134007</attachid>
            <date>2012-03-27 02:18:16 -0700</date>
            <delta_ts>2012-03-27 10:40:32 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>noexitdeadinlinee_patch_1.diff</filename>
            <type>text/plain</type>
            <size>3664</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTEyMjI4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBA
CisyMDEyLTAzLTI3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIE9TUiBleGl0IHNob3VsZCBub3QgZ2VuZXJhdGUgYW4gZXhpdCBmb3IgdmFyaWFibGVzIG9m
IGlubGluZWVzIGlmIHRoZQorICAgICAgICBpbmxpbmVlcyBhcmUgbm90IGluIHNjb3BlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjMxMgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgKiBieXRl
Y29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6YmFzZWxpbmVDb2RlQmxvY2tGb3JJbmxp
bmVDYWxsRnJhbWUpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6YmFzZWxpbmVDb2Rl
QmxvY2tGb3JPcmlnaW5BbmRCYXNlbGluZUNvZGVCbG9jayk6CisgICAgICAgICogZGZnL0RGR09T
UkV4aXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNvbXB1dGVOdW1WYXJpYWJsZXNGb3JDb2Rl
T3JpZ2luKToKKyAgICAgICAgKERGRyk6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6T1NS
RXhpdCk6CisKIDIwMTItMDMtMjYgIFRob3VyYXlhIEFORE9MU0kgIDx0aG91cmF5YS5hbmRvbHNp
QHN0LmNvbT4KIAogICAgICAgICBVbmFsaWduZWQgdXNlcnNwYWNlIGFjY2VzcyBmb3IgU0g0IHBs
YXRmb3JtcwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
aAkocmV2aXNpb24gMTEyMDQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzg1LDEzICsxMzg1LDE4IEBAIG5hbWVzcGFj
ZSBKU0MgewogI2VuZGlmCiAgICAgfTsKIAorICAgIGlubGluZSBDb2RlQmxvY2sqIGJhc2VsaW5l
Q29kZUJsb2NrRm9ySW5saW5lQ2FsbEZyYW1lKElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZy
YW1lKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlubGluZUNhbGxGcmFtZSk7CisgICAgICAgIEV4
ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gaW5saW5lQ2FsbEZyYW1lLT5leGVjdXRhYmxlLmdl
dCgpOworICAgICAgICBBU1NFUlQoZXhlY3V0YWJsZS0+c3RydWN0dXJlKCktPmNsYXNzSW5mbygp
ID09ICZGdW5jdGlvbkV4ZWN1dGFibGU6OnNfaW5mbyk7CisgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKS0+YmFzZWxpbmVDb2RlQmxvY2tG
b3IoaW5saW5lQ2FsbEZyYW1lLT5pc0NhbGwgPyBDb2RlRm9yQ2FsbCA6IENvZGVGb3JDb25zdHJ1
Y3QpOworICAgIH0KKyAgICAKICAgICBpbmxpbmUgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9j
a0Zvck9yaWdpbkFuZEJhc2VsaW5lQ29kZUJsb2NrKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmln
aW4sIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2spCiAgICAgewotICAgICAgICBpZiAoY29k
ZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpIHsKLSAgICAgICAgICAgIEV4ZWN1dGFibGVCYXNlKiBl
eGVjdXRhYmxlID0gY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmV4ZWN1dGFibGUuZ2V0KCk7
Ci0gICAgICAgICAgICBBU1NFUlQoZXhlY3V0YWJsZS0+c3RydWN0dXJlKCktPmNsYXNzSW5mbygp
ID09ICZGdW5jdGlvbkV4ZWN1dGFibGU6OnNfaW5mbyk7Ci0gICAgICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSktPmJhc2VsaW5lQ29kZUJs
b2NrRm9yKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5pc0NhbGwgPyBDb2RlRm9yQ2FsbCA6
IENvZGVGb3JDb25zdHJ1Y3QpOwotICAgICAgICB9CisgICAgICAgIGlmIChjb2RlT3JpZ2luLmlu
bGluZUNhbGxGcmFtZSkKKyAgICAgICAgICAgIHJldHVybiBiYXNlbGluZUNvZGVCbG9ja0Zvcklu
bGluZUNhbGxGcmFtZShjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSk7CiAgICAgICAgIHJldHVy
biBiYXNlbGluZUNvZGVCbG9jazsKICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAJKHJldmlzaW9uIDExMjA0MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMz
LDE2IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAorc3RhdGljIHVuc2ln
bmVkIGNvbXB1dGVOdW1WYXJpYWJsZXNGb3JDb2RlT3JpZ2luKAorICAgIENvZGVCbG9jayogY29k
ZUJsb2NrLCBjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luKQoreworICAgIGlmICghY29kZU9y
aWdpbi5pbmxpbmVDYWxsRnJhbWUpCisgICAgICAgIHJldHVybiBjb2RlQmxvY2stPm1fbnVtQ2Fs
bGVlUmVnaXN0ZXJzOworICAgIHJldHVybgorICAgICAgICBjb2RlT3JpZ2luLmlubGluZUNhbGxG
cmFtZS0+c3RhY2tPZmZzZXQgKworICAgICAgICBiYXNlbGluZUNvZGVCbG9ja0ZvcklubGluZUNh
bGxGcmFtZShjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJz
OworfQorCiBPU1JFeGl0OjpPU1JFeGl0KEV4aXRLaW5kIGtpbmQsIEpTVmFsdWVTb3VyY2UganNW
YWx1ZVNvdXJjZSwgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSB2YWx1ZVByb2ZpbGUsIE1h
Y3JvQXNzZW1ibGVyOjpKdW1wIGNoZWNrLCBTcGVjdWxhdGl2ZUpJVCogaml0LCB1bnNpZ25lZCBy
ZWNvdmVyeUluZGV4KQogICAgIDogbV9qc1ZhbHVlU291cmNlKGpzVmFsdWVTb3VyY2UpCiAgICAg
LCBtX3ZhbHVlUHJvZmlsZSh2YWx1ZVByb2ZpbGUpCkBAIC00Myw3ICs1Myw3IEBAIE9TUkV4aXQ6
Ok9TUkV4aXQoRXhpdEtpbmQga2luZCwgSlNWYWx1ZVMKICAgICAsIG1fa2luZChraW5kKQogICAg
ICwgbV9jb3VudCgwKQogICAgICwgbV9hcmd1bWVudHMoaml0LT5tX2FyZ3VtZW50cy5zaXplKCkp
Ci0gICAgLCBtX3ZhcmlhYmxlcyhqaXQtPm1fdmFyaWFibGVzLnNpemUoKSkKKyAgICAsIG1fdmFy
aWFibGVzKGNvbXB1dGVOdW1WYXJpYWJsZXNGb3JDb2RlT3JpZ2luKGppdC0+bV9qaXQuZ3JhcGgo
KS5tX3Byb2ZpbGVkQmxvY2ssIGppdC0+bV9jb2RlT3JpZ2luRm9yT1NSKSkKICAgICAsIG1fbGFz
dFNldE9wZXJhbmQoaml0LT5tX2xhc3RTZXRPcGVyYW5kKQogewogICAgIEFTU0VSVChtX2NvZGVP
cmlnaW4uaXNTZXQoKSk7Cg==
</data>
<flag name="review"
          id="138154"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>