<?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>24654</bug_id>
          
          <creation_ts>2009-03-17 14:11:53 -0700</creation_ts>
          <short_desc>REGRESSION (Safari 4): Incorrect function return value when using IE &quot;try ... finally&quot; memory leak work-around</short_desc>
          <delta_ts>2009-03-18 00:25:12 -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="Christopher Blum">christopher.blum</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>114094</commentid>
    <comment_count>0</comment_count>
    <who name="Christopher Blum">christopher.blum</who>
    <bug_when>2009-03-17 14:11:53 -0700</bug_when>
    <thetext>Hey,

I recently checked out Safari 4 Public Beta and recognized that the following piece of javascript code behaves different than in other browsers (tested in Safari 3.2, FF 2, FF 3, IE 6, IE 7, IE 8, Opera 9.6).

var foo = function() {
  var bar = {};
  try { return bar; } finally { bar = null };
};

foo(); // this returns null in Safari 4 Public Beta (Win and Mac)

Safari 4 is the only browser that doesn&apos;t return an empty object.
The &quot;try ... finally&quot; is a known workaround for preventing memory leaks in IE 6.
(http://www.hedgerwow.com/360/dhtml/ie6_memory_leak_fix/)

Regards,
Christopher</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114121</commentid>
    <comment_count>1</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2009-03-17 16:11:50 -0700</bug_when>
    <thetext>&lt;rdar://problem/6692138&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114168</commentid>
    <comment_count>2</comment_count>
      <attachid>28718</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-03-17 23:35:49 -0700</bug_when>
    <thetext>Created attachment 28718
Fix codegen for return statements if there are finalisers present.

Fairly obvious fix, added test to existing finaliser test, and converted test to newer js test form.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114170</commentid>
    <comment_count>3</comment_count>
      <attachid>28718</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2009-03-17 23:39:36 -0700</bug_when>
    <thetext>Comment on attachment 28718
Fix codegen for return statements if there are finalisers present.

I like returnRegister more than returnReg, and it matches what we use elsewhere in the JIT codegen. Other than that, r=me if perf is fine. I always like seeing tests in the newer format.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114171</commentid>
    <comment_count>4</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-03-18 00:25:12 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	JavaScriptCore/ChangeLog
	M	JavaScriptCore/bytecompiler/BytecodeGenerator.h
	M	JavaScriptCore/parser/Nodes.cpp
	M	LayoutTests/ChangeLog
	M	LayoutTests/fast/js/finally-codegen-failure-expected.txt
	M	LayoutTests/fast/js/finally-codegen-failure.html
	A	LayoutTests/fast/js/resources/finally-codegen-failure.js
Committed r41806</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28718</attachid>
            <date>2009-03-17 23:35:49 -0700</date>
            <delta_ts>2009-03-17 23:39:36 -0700</delta_ts>
            <desc>Fix codegen for return statements if there are finalisers present.</desc>
            <filename>finally-fix.patch</filename>
            <type>text/plain</type>
            <size>5936</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCA3YjQ0MWIxLi5kNDg0ZTJhIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMDktMDMtMTcgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NjY5MjEzOD4gUkVHUkVTU0lPTiAoU2FmYXJpIDQpOiBJbmNvcnJlY3QgZnVuY3Rpb24gcmV0dXJu
IHZhbHVlIHdoZW4gdXNpbmcgSUUgInRyeSAuLi4gZmluYWxseSIgbWVtb3J5IGxlYWsgd29yay1h
cm91bmQgKDI0NjU0KQorICAgICAgICA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI0NjU0PgorCisgICAgICAgIElmIHRoZSByZXR1cm4gdmFsdWUgZm9yIGEgZnVuY3Rp
b24gaXMgaW4gYSBsb2NhbCByZWdpc3RlciB3ZSBuZWVkCisgICAgICAgIHRvIGNvcHkgaXQgYmVm
b3JlIGV4ZWN1dGluZyBhbnkgZmluYWxpc2Vycywgb3RoZXJ3aXNlIGl0IGlzIHBvc3NpYmxlCisg
ICAgICAgIGZvciB0aGUgZmluYWxpc2VyIHRvIGNsb2JiZXIgdGhlIHJlc3VsdC4KKworICAgICAg
ICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6aGFzRmluYWxpc2VyKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuY3Bw
OgorICAgICAgICAoSlNDOjpSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorCiAyMDA5LTAzLTE3
ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IE1hcmsgUm93ZS4KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggY2ViNTg4MS4uMTk0YWFiZCAxMDA2NDQKLS0tIGEvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTMxNyw2ICszMTcs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0RGVidWdIb29rKERlYnVnSG9v
a0lELCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpOwogCiAgICAgICAgIGludCBzY29wZURl
cHRoKCkgeyByZXR1cm4gbV9keW5hbWljU2NvcGVEZXB0aCArIG1fZmluYWxseURlcHRoOyB9Cisg
ICAgICAgIGJvb2wgaGFzRmluYWxpc2VyKCkgeyByZXR1cm4gbV9maW5hbGx5RGVwdGggIT0gMDsg
fQogCiAgICAgICAgIHZvaWQgcHVzaEZpbmFsbHlDb250ZXh0KExhYmVsKiB0YXJnZXQsIFJlZ2lz
dGVySUQqIHJldHVybkFkZHJEc3QpOwogICAgICAgICB2b2lkIHBvcEZpbmFsbHlDb250ZXh0KCk7
CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwIGIvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL05vZGVzLmNwcAppbmRleCA0OTk0M2I1Li43NmRiMWMwIDEwMDY0NAotLS0g
YS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Ob2Rlcy5jcHAKQEAgLTIwMDksOCArMjAwOSwxNSBAQCBSZWdpc3RlcklEKiBSZXR1cm5O
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogZAogICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKICAgICAgICAg
ZHN0ID0gMDsKICAgICBSZWdpc3RlcklEKiByMCA9IG1fdmFsdWUgPyBnZW5lcmF0b3IuZW1pdE5v
ZGUoZHN0LCBtX3ZhbHVlLmdldCgpKSA6IGdlbmVyYXRvci5lbWl0TG9hZChkc3QsIGpzVW5kZWZp
bmVkKCkpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5SZWc7CisgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHNvdXJjZUd1YXJkOwogICAgIGlmIChnZW5lcmF0b3Iuc2NvcGVEZXB0aCgpKSB7
CiAgICAgICAgIFJlZlB0cjxMYWJlbD4gbDAgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKKyAgICAg
ICAgaWYgKGdlbmVyYXRvci5oYXNGaW5hbGlzZXIoKSAmJiAhcjAtPmlzVGVtcG9yYXJ5KCkpIHsK
KyAgICAgICAgICAgIHNvdXJjZUd1YXJkID0gcjA7CisgICAgICAgICAgICByZXR1cm5SZWcgPSBn
ZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCByMCk7CisgICAgICAg
ICAgICByMCA9IHJldHVyblJlZy5nZXQoKTsKKyAgICAgICAgfQogICAgICAgICBnZW5lcmF0b3Iu
ZW1pdEp1bXBTY29wZXMobDAuZ2V0KCksIDApOwogICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVs
KGwwLmdldCgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOGM2OWFlMC4uMjYwYjEyZCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDA5LTAzLTE3ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGZp
bmFsbHkgY29kZWdlbiB0ZXN0IHRvIG5ld2VyIHN0eWxlLCBhZGQgYWRkaXRpb25hbCB0ZXN0cyBm
b3IKKyAgICAgICAgZmluYWxpc2VyIGNoYW5naW5nIHRoZSByZXR1cm4gdmFsdWUuCisKKyAgICAg
ICAgKiBmYXN0L2pzL2ZpbmFsbHktY29kZWdlbi1mYWlsdXJlLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBmYXN0L2pzL2ZpbmFsbHktY29kZWdlbi1mYWlsdXJlLmh0bWw6CisgICAgICAgICogZmFz
dC9qcy9yZXNvdXJjZXMvZmluYWxseS1jb2RlZ2VuLWZhaWx1cmUuanM6IEFkZGVkLgorCiAyMDA5
LTAzLTE3ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAd2Via2l0Lm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvanMv
ZmluYWxseS1jb2RlZ2VuLWZhaWx1cmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9q
cy9maW5hbGx5LWNvZGVnZW4tZmFpbHVyZS1leHBlY3RlZC50eHQKaW5kZXggZDZjZWI5My4uMDkw
NDRlZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9maW5hbGx5LWNvZGVnZW4tZmFp
bHVyZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9maW5hbGx5LWNvZGVn
ZW4tZmFpbHVyZS1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwxMiBAQAotVGhpcyBwYWdlIHRlc3Rz
IGEgY29kZWdlbiBidWcgd2l0aCBmaW5hbGx5IGJsb2Nrcy4gSWYgdGhlIHRlc3QgcGFzc2VzLCB5
b3UnbGwgc2VlIGEgUEFTUyBtZXNzYWdlIGJlbG93LgorVGVzdCB0aGF0IGZpbmFsbHkgYmVoYXZp
b3VyIGlzIGNvcnJlY3QuCiAKLVBBU1MKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIGYoKSBpcyB0cnVlCitQQVNTIChmdW5jdGlvbiAoKSB7IHZhciBhID0gdHJ1ZTsgdHJ5IHsg
cmV0dXJuIGE7IH0gZmluYWxseSB7IGEgPSBmYWxzZTsgfX0pKCkgaXMgdHJ1ZQorUEFTUyAoZnVu
Y3Rpb24gKCkgeyB2YXIgYSA9ICdQQVNTJzsgdHJ5IHsgdGhyb3cgYTsgfSBmaW5hbGx5IHsgYSA9
ICdGQUlMJzsgfX0pKCkgdGhyZXcgZXhjZXB0aW9uIFBBU1MuCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9qcy9maW5hbGx5LWNvZGVnZW4tZmFpbHVyZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9q
cy9maW5hbGx5LWNvZGVnZW4tZmFpbHVyZS5odG1sCmluZGV4IDUxYzhhNzEuLmI3OTZjYmUgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvanMvZmluYWxseS1jb2RlZ2VuLWZhaWx1cmUuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL2ZpbmFsbHktY29kZWdlbi1mYWlsdXJlLmh0bWwK
QEAgLTEsMzEgKzEsMTMgQEAKLTxwPlRoaXMgcGFnZSB0ZXN0cyBhIGNvZGVnZW4gYnVnIHdpdGgg
ZmluYWxseSBibG9ja3MuIElmIHRoZSB0ZXN0IHBhc3NlcywgeW91J2xsCi1zZWUgYSBQQVNTIG1l
c3NhZ2UgYmVsb3cuPC9wPgotCi08cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KLQotPHNjcmlwdD4K
LWZ1bmN0aW9uIGxvZyhzKQotewotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xl
IikuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocyArICJcbiIpKTsKLX0KLQot
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7Ci0KLWEgPSB7Ci0gICAgZjogZnVuY3Rpb24oKSB7IHJldHVybiAiUEFT
UyI7IH0KLX07Ci0KLWEuZi50b1N0cmluZyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gIkZBSUwiOyB9
OwotCi1mdW5jdGlvbiBmKCkgewotICAgIHRyeSB7Ci0gICAgICAgIGEuZigpOwotICAgICAgICBh
LmYoKTsKLSAgICAgICAgcmV0dXJuIGEuZigpOwotICAgIH0gZmluYWxseSB7Ci0gICAgICAgIGEu
ZigpOwotICAgIH0KLX0KLWxvZyhmKCkpCi08L3NjcmlwdD4KKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9maW5hbGx5LWNvZGVn
ZW4tZmFpbHVyZS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291
cmNlcy9maW5hbGx5LWNvZGVnZW4tZmFpbHVyZS5qcyBiL0xheW91dFRlc3RzL2Zhc3QvanMvcmVz
b3VyY2VzL2ZpbmFsbHktY29kZWdlbi1mYWlsdXJlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjgxNjBmYzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2pzL3Jlc291cmNlcy9maW5hbGx5LWNvZGVnZW4tZmFpbHVyZS5qcwpAQCAtMCwwICsxLDIzIEBA
CitkZXNjcmlwdGlvbigiVGVzdCB0aGF0IGZpbmFsbHkgYmVoYXZpb3VyIGlzIGNvcnJlY3QuIik7
CisKK2EgPSB7CisgICAgZjogZnVuY3Rpb24oKSB7IHJldHVybiB0cnVlOyB9Cit9OworCithLmYu
dG9TdHJpbmcgPSBmdW5jdGlvbigpIHsgcmV0dXJuICJGYWlsIjsgfTsKKworZnVuY3Rpb24gZigp
IHsKKyAgICB0cnkgeworICAgICAgICBhLmYoKTsKKyAgICAgICAgYS5mKCk7CisgICAgICAgIHJl
dHVybiBhLmYoKTsKKyAgICB9IGZpbmFsbHkgeworICAgICAgICBhLmYoKTsKKyAgICB9Cit9Citz
aG91bGRCZVRydWUoImYoKSIpCisKK3Nob3VsZEJlVHJ1ZSgiKGZ1bmN0aW9uICgpIHsgdmFyIGEg
PSB0cnVlOyB0cnkgeyByZXR1cm4gYTsgfSBmaW5hbGx5IHsgYSA9IGZhbHNlOyB9fSkoKSIpOwor
c2hvdWxkVGhyb3coIihmdW5jdGlvbiAoKSB7IHZhciBhID0gJ1BBU1MnOyB0cnkgeyB0aHJvdyBh
OyB9IGZpbmFsbHkgeyBhID0gJ0ZBSUwnOyB9fSkoKSIpOworCitzdWNjZXNzZnVsbHlQYXJzZWQg
PSB0cnVlOwo=
</data>
<flag name="review"
          id="14153"
          type_id="1"
          status="+"
          setter="zwarich"
    />
          </attachment>
      

    </bug>

</bugzilla>