<?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>146029</bug_id>
          
          <creation_ts>2015-06-16 15:16:04 -0700</creation_ts>
          <short_desc>Inlining in the DFG trashes ByteCodeParser::m_currentInstruction for the calling function</short_desc>
          <delta_ts>2015-06-16 17:06:51 -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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1102356</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-06-16 15:16:04 -0700</bug_when>
    <thetext>When we inline a function call in the DFG, we essential recurse in ByteCodeParser::attemptToInlineCall() when we call inlineCall().  In the process we overwrite m_currentInstruction.  When we return, m_currentInstruction no longer points at the call instruction.  The fix is to save and restore m_currentInstruction around the call to inlineCall().

&lt;rdar://problem/20841734&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102381</commentid>
    <comment_count>1</comment_count>
      <attachid>254975</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-06-16 16:22:03 -0700</bug_when>
    <thetext>Created attachment 254975
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102384</commentid>
    <comment_count>2</comment_count>
      <attachid>254975</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-06-16 16:43:09 -0700</bug_when>
    <thetext>Comment on attachment 254975
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:7
&gt; +

IMHO, you should explain the bug here. How/where m_currentInstruction is trashed, and what were the side effects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102386</commentid>
    <comment_count>3</comment_count>
      <attachid>254975</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-06-16 16:44:41 -0700</bug_when>
    <thetext>Comment on attachment 254975
Patch

r=me too</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102389</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-06-16 16:50:45 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 254975 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=254975&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:7
&gt; &gt; +
&gt; 
&gt; IMHO, you should explain the bug here. How/where m_currentInstruction is
&gt; trashed, and what were the side effects.

I&apos;ll add comments explaining how this happens.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102401</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-06-16 17:06:51 -0700</bug_when>
    <thetext>Committed r185627: &lt;http://trac.webkit.org/changeset/185627&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254975</attachid>
            <date>2015-06-16 16:22:03 -0700</date>
            <delta_ts>2015-06-16 16:43:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>146029.patch</filename>
            <type>text/plain</type>
            <size>4875</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg1NjIyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBA
CisyMDE1LTA2LTE2ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIElubGluaW5nIGluIHRoZSBERkcgdHJhc2hlcyBCeXRlQ29kZVBhcnNlcjo6bV9jdXJyZW50
SW5zdHJ1Y3Rpb24gZm9yIHRoZSBjYWxsaW5nIGZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDYwMjkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTYXZlIGFuZCByZXN0b3JlIG1fY3VycmVudElu
c3RydWN0aW9uIGFyb3VuZCBjYWxsIHRvIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKCkgYXMg
aXQgd2lsbAorICAgICAgICB1c2UgbV9jdXJyZW50SW5zdHJ1Y3Rpb24gZHVyaW5nIGl0cyBvd24g
cGFyc2luZy4KKworICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmF0dGVtcHRUb0lubGluZUNhbGwpOgorICAgICAg
ICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKTogQWRkZWQgYW4gQVNTRVJU
IHRvIGNhdGNoIHRoaXMgaXNzdWUuCisKIDIwMTUtMDYtMTYgIEZpbGlwIFBpemxvICA8ZnBpemxv
QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsIG91dCB1bmludGVuZGVkIEpT
QyBjaGFuZ2UgZnJvbSBodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTg1NDI1LgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAJKHJldmlzaW9uIDE4NTU2NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDg3LDggKzE0ODcsMTAgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6YXR0ZW1wdFRvSW5saW5lQ2FsbAogICAgIGlmIChteUlubGluaW5n
Q29zdCA+IGlubGluaW5nQmFsYW5jZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgSW5z
dHJ1Y3Rpb24qIHNhdmVkQ3VycmVudEluc3RydWN0aW9uID0gbV9jdXJyZW50SW5zdHJ1Y3Rpb247
CiAgICAgaW5saW5lQ2FsbChjYWxsVGFyZ2V0Tm9kZSwgcmVzdWx0T3BlcmFuZCwgY2FsbGVlLCBy
ZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIG5leHRPZmZzZXQsIGtp
bmQsIGNhbGxlckxpbmthYmlsaXR5LCBpbnNlcnRDaGVja3MpOwogICAgIGlubGluaW5nQmFsYW5j
ZSAtPSBteUlubGluaW5nQ29zdDsKKyAgICBtX2N1cnJlbnRJbnN0cnVjdGlvbiA9IHNhdmVkQ3Vy
cmVudEluc3RydWN0aW9uOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zMzk3LDYgKzMzOTks
OCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAg
ICAKICAgICAgICAgY2FzZSBvcF9jYWxsOgogICAgICAgICAgICAgaGFuZGxlQ2FsbChjdXJyZW50
SW5zdHJ1Y3Rpb24sIENhbGwsIENvZGVGb3JDYWxsKTsKKyAgICAgICAgICAgIC8vIFZlcmlmeSB0
aGF0IGhhbmRsZUNhbGwoKSwgd2hpY2ggY291bGQgaGF2ZSBpbmxpbmVkIHRoZSBjYWxsZWUsIGRp
ZG4ndCB0cmFzaCBtX2N1cnJlbnRJbnN0cnVjdGlvbgorICAgICAgICAgICAgQVNTRVJUKG1fY3Vy
cmVudEluc3RydWN0aW9uID09IGN1cnJlbnRJbnN0cnVjdGlvbik7CiAgICAgICAgICAgICBORVhU
X09QQ09ERShvcF9jYWxsKTsKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIG9wX2NvbnN0cnVj
dDoKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NTYyMikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE1LTA2LTE2ICBNaWNoYWVsIFNhYm9m
ZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAgICAgIElubGluaW5nIGluIHRoZSBERkcgdHJh
c2hlcyBCeXRlQ29kZVBhcnNlcjo6bV9jdXJyZW50SW5zdHJ1Y3Rpb24gZm9yIHRoZSBjYWxsaW5n
IGZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDYwMjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBOZXcgcmVncmVzc2lvbiB0ZXN0LgorCisgICAgICAgICoganMvcmVncmVzcy0xNDYwMjktZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzLTE0NjAyOS5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvcmVncmVzcy0xNDYwMjkuanM6IEFkZGVkLgor
ICAgICAgICAobXlQdXNoKToKKyAgICAgICAgKG15UG9wKToKKyAgICAgICAgKGZvbyk6CisgICAg
ICAgICh0ZXN0KToKKwogMjAxNS0wNi0xNiAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxl
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIHRlc3QgdXBkYXRlOiBBZGQgbXVsdGlwbGUgc2Ny
b2xsLXNuYXAtY29vcmRpbmF0ZSB0ZXN0LgpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy0x
NDYwMjktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mt
MTQ2MDI5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jl
c3MtMTQ2MDI5LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitW
ZXJpZnkgdGhhdCB3ZSBkb24ndCB0cmFzaCBtX2N1cnJlbnRJbnN0cnVjdGlvbiB3aXRoIGFuIGlu
bGluZWQgZnVuY3Rpb24uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIENv
cnJlY3RseSBpbmxpbmVkIGNhbGxlZSBhbmQgdXNlZCBtX2N1cnJlbnRJbnN0cnVjdGlvbiBpbiBj
YWxsZXIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzLTE0NjAyOS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2pzL3JlZ3Jlc3MtMTQ2MDI5Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9qcy9yZWdyZXNzLTE0NjAyOS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9yZWdy
ZXNzLTE0NjAyOS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9qcy9zY3JpcHQtdGVzdHMvcmVncmVzcy0xNDYwMjkuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvanMvc2NyaXB0LXRlc3RzL3JlZ3Jlc3MtMTQ2MDI5LmpzCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3JlZ3Jlc3MtMTQ2MDI5LmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMzIgQEAKK2Rlc2NyaXB0aW9uKCJWZXJpZnkgdGhhdCB3ZSBkb24ndCB0
cmFzaCBtX2N1cnJlbnRJbnN0cnVjdGlvbiB3aXRoIGFuIGlubGluZWQgZnVuY3Rpb24uIik7CisK
K2Z1bmN0aW9uIG15UHVzaChhLCBvKSB7CisgICAgYS5wdXNoKG8pOworfQorCitmdW5jdGlvbiBt
eVBvcChhKSB7CisgICAgYS5wb3AoKTsKK30KKworZnVuY3Rpb24gZm9vKGEpIHsKKyAgICBteVB1
c2goYSwgNDIpOworICAgIG15UG9wKGEpOworICAgIHJldHVybiBhLmxlbmd0aDsKK30KKworbm9J
bmxpbmUoZm9vKTsKKworZnVuY3Rpb24gdGVzdCgpIHsKKyAgICB2YXIgbXlBcnJheSA9IFsib25l
IiwgInR3byIsICJ0aHJlZSJdOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytp
KSB7CisgICAgICAgIGlmIChmb28obXlBcnJheSkgIT0gMykgeworICAgICAgICAgICAgdGVzdEZh
aWxlZCgiQXJyYXkgY2hhbmdlZCB1bmV4cGVjdGVkbHkiKTsKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworaWYgKHRlc3Qo
KSkKKyAgIHRlc3RQYXNzZWQoIkNvcnJlY3RseSBpbmxpbmVkIGNhbGxlZSBhbmQgdXNlZCBtX2N1
cnJlbnRJbnN0cnVjdGlvbiBpbiBjYWxsZXIiKTsK
</data>
<flag name="review"
          id="279994"
          type_id="1"
          status="+"
          setter="benjamin"
    />
          </attachment>
      

    </bug>

</bugzilla>