<?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>169704</bug_id>
          
          <creation_ts>2017-03-15 15:36:37 -0700</creation_ts>
          <short_desc>WebAssembly: When we GC to try to get a fast memory, we should call collectAllGarbage(), not collectSync()</short_desc>
          <delta_ts>2017-03-15 17:36:45 -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>WebKit 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>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1288286</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-03-15 15:36:37 -0700</bug_when>
    <thetext>Otherwise we won&apos;t actually end up getting the memory because we don&apos;t do any sweeping.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288296</commentid>
    <comment_count>1</comment_count>
      <attachid>304563</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-03-15 15:41:17 -0700</bug_when>
    <thetext>Created attachment 304563
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288297</commentid>
    <comment_count>2</comment_count>
      <attachid>304564</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-03-15 15:42:32 -0700</bug_when>
    <thetext>Created attachment 304564
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288300</commentid>
    <comment_count>3</comment_count>
      <attachid>304564</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-03-15 15:43:31 -0700</bug_when>
    <thetext>Comment on attachment 304564
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288335</commentid>
    <comment_count>4</comment_count>
      <attachid>304564</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-15 16:17:18 -0700</bug_when>
    <thetext>Comment on attachment 304564
patch

Clearing flags on attachment: 304564

Committed r214018: &lt;http://trac.webkit.org/changeset/214018&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288337</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-15 16:17:24 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288345</commentid>
    <comment_count>6</comment_count>
      <attachid>304564</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-03-15 16:35:52 -0700</bug_when>
    <thetext>Comment on attachment 304564
patch

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

&gt; Source/JavaScriptCore/wasm/WasmMemory.cpp:123
&gt; -        vm.heap.collectSync();
&gt; +        vm.heap.collectAllGarbage();
&gt;          return dequeFastMemory();

This is sad - isn&apos;t this whole thing part of some promise anyway?  Seems like waiting for the GC to finish should be part of the promise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288352</commentid>
    <comment_count>7</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-03-15 16:43:42 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 304564 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=304564&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/wasm/WasmMemory.cpp:123
&gt; &gt; -        vm.heap.collectSync();
&gt; &gt; +        vm.heap.collectAllGarbage();
&gt; &gt;          return dequeFastMemory();
&gt; 
&gt; This is sad - isn&apos;t this whole thing part of some promise anyway?  Seems
&gt; like waiting for the GC to finish should be part of the promise.

I see what you&apos;re getting at here, but I think it&apos;s somewhat tricky to do. We would need a two-level strategy. Call collectSync, then set up a promise to be called when things get swept, then set up another promise when we&apos;re done compiling. I&apos;m not sure exactly how to do that. It might be worth doing as part of Keith&apos;s work on async compilation, but we also don&apos;t expect this code to run very often.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288358</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-03-15 16:55:18 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; Comment on attachment 304564 [details]
&gt; &gt; patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=304564&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/wasm/WasmMemory.cpp:123
&gt; &gt; &gt; -        vm.heap.collectSync();
&gt; &gt; &gt; +        vm.heap.collectAllGarbage();
&gt; &gt; &gt;          return dequeFastMemory();
&gt; &gt; 
&gt; &gt; This is sad - isn&apos;t this whole thing part of some promise anyway?  Seems
&gt; &gt; like waiting for the GC to finish should be part of the promise.
&gt; 
&gt; I see what you&apos;re getting at here, but I think it&apos;s somewhat tricky to do.
&gt; We would need a two-level strategy. Call collectSync, then set up a promise
&gt; to be called when things get swept, then set up another promise when we&apos;re
&gt; done compiling. I&apos;m not sure exactly how to do that. It might be worth doing
&gt; as part of Keith&apos;s work on async compilation, but we also don&apos;t expect this
&gt; code to run very often.

Right, we would need the incremental sweeper to run more aggressively and we would want it to notify us when done. 

Worth filing a bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288382</commentid>
    <comment_count>9</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-03-15 17:36:45 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; (In reply to comment #6)
&gt; &gt; &gt; Comment on attachment 304564 [details]
&gt; &gt; &gt; patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=304564&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/JavaScriptCore/wasm/WasmMemory.cpp:123
&gt; &gt; &gt; &gt; -        vm.heap.collectSync();
&gt; &gt; &gt; &gt; +        vm.heap.collectAllGarbage();
&gt; &gt; &gt; &gt;          return dequeFastMemory();
&gt; &gt; &gt; 
&gt; &gt; &gt; This is sad - isn&apos;t this whole thing part of some promise anyway?  Seems
&gt; &gt; &gt; like waiting for the GC to finish should be part of the promise.
&gt; &gt; 
&gt; &gt; I see what you&apos;re getting at here, but I think it&apos;s somewhat tricky to do.
&gt; &gt; We would need a two-level strategy. Call collectSync, then set up a promise
&gt; &gt; to be called when things get swept, then set up another promise when we&apos;re
&gt; &gt; done compiling. I&apos;m not sure exactly how to do that. It might be worth doing
&gt; &gt; as part of Keith&apos;s work on async compilation, but we also don&apos;t expect this
&gt; &gt; code to run very often.
&gt; 
&gt; Right, we would need the incremental sweeper to run more aggressively and we
&gt; would want it to notify us when done. 
&gt; 
&gt; Worth filing a bug.

Filed:
https://bugs.webkit.org/show_bug.cgi?id=169728</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304563</attachid>
            <date>2017-03-15 15:41:17 -0700</date>
            <delta_ts>2017-03-15 15:42:32 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>1897</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjE0MDExKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBA
CisyMDE3LTAzLTE1ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IFdlYkFzc2VtYmx5OiBXaGVuIHdlIEdDIHRvIHRyeSB0byBnZXQgYSBmYXN0IG1lbW9yeSwgd2Ug
c2hvdWxkIGNhbGwgY29sbGVjdEFsbEdhcmJhZ2UoKSwgbm90IGNvbGxlY3RTeW5jKCkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTcwNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIHdlcmVuJ3QgYWx3
YXlzIHN3ZWVwaW5nIHRoZSBtZW1vcnkgbmVlZGVkIHRvIGZyZWUKKyAgICAgICAgdGhlIFdhc21N
ZW1vcnkgd2Ugd2FudGVkIHRvIHVzZS4gY29sbGVjdEFsbEdhcmJhZ2UoKQorICAgICAgICB3aWxs
IGRvIHRoaXMgaWYgdGhlIEpTIG9iamVjdHMgd3JhcHBpbmcgV2FzbU1lbW9yeQorICAgICAgICBh
cmUgZGVhZC4KKworICAgICAgICAqIHdhc20vV2FzbU1lbW9yeS5jcHA6CisgICAgICAgIChKU0M6
Oldhc206OnRyeUdldEZhc3RNZW1vcnkpOgorCiAyMDE3LTAzLTE1ICBNYXJrIExhbSAgPG1hcmsu
bGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggbWlzc2luZyBleGNlcHRpb24gY2hlY2tzIGlu
IEludGVycHJldGVyLmNwcC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21N
ZW1vcnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21N
ZW1vcnkuY3BwCShyZXZpc2lvbiAyMTM5ODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtTWVtb3J5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDE1ICsxMTksMTUgQEAgaW5s
aW5lIGJvb2wgdHJ5R2V0RmFzdE1lbW9yeShWTSYgdm0sIHZvaQogICAgIC8vIElmIHdlIGhhdmUg
YWxsb2NhdGVkIGFsbCB0aGUgZmFzdCBtZW1vcmllcy4uLiB0b28gYmFkLgogICAgIGlmIChhbGxv
Y2F0ZWRGYXN0TWVtb3JpZXMgPT0gbWF4RmFzdE1lbW9yaWVzKSB7CiAgICAgICAgIC8vIFRoZXJl
IGlzIGEgcmVhc29uYWJsZSBjaGFuY2UgdGhhdCBhbm90aGVyIG1vZHVsZSBoYXMgZGllZCBidXQg
aGFzIG5vdCBiZWVuIGNvbGxlY3RlZCB5ZXQuIERvbid0IGxvc2UgaG9wZSB5ZXQhCi0gICAgICAg
IHZtLmhlYXAuY29sbGVjdFN5bmMoKTsKKyAgICAgICAgdm0uaGVhcC5jb2xsZWN0QWxsR2FyYmFn
ZSgpOwogICAgICAgICByZXR1cm4gZGVxdWVGYXN0TWVtb3J5KCk7CiAgICAgfQogCiAgICAgaWYg
KG1tYXBCeXRlcyhmYXN0TWVtb3J5TWFwcGVkQnl0ZXMsIG1lbW9yeSkpIHsKICAgICAgICAgbWFw
cGVkQ2FwYWNpdHkgPSBmYXN0TWVtb3J5TWFwcGVkQnl0ZXM7CiAgICAgICAgIG1vZGUgPSBNZW1v
cnk6OlNpZ25hbGluZzsKLSAgICAgICAgYWxsb2NhdGVkRmFzdE1lbW9yaWVzKys7CiAgICAgICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1lbW9yeUxvY2spOworICAgICAgICBhbGxvY2F0ZWRGYXN0TWVt
b3JpZXMrKzsKICAgICAgICAgYXV0byByZXN1bHQgPSBhY3RpdmVGYXN0TWVtb3JpZXMobG9ja2Vy
KS5hZGQobWVtb3J5KTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05l
d0VudHJ5KTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304564</attachid>
            <date>2017-03-15 15:42:32 -0700</date>
            <delta_ts>2017-03-15 16:17:18 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>2009</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjE0MDExKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBA
CisyMDE3LTAzLTE1ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IFdlYkFzc2VtYmx5OiBXaGVuIHdlIEdDIHRvIHRyeSB0byBnZXQgYSBmYXN0IG1lbW9yeSwgd2Ug
c2hvdWxkIGNhbGwgY29sbGVjdEFsbEdhcmJhZ2UoKSwgbm90IGNvbGxlY3RTeW5jKCkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTcwNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIHdlcmVuJ3QgYWx3
YXlzIHN3ZWVwaW5nIHRoZSBtZW1vcnkgbmVlZGVkIHRvIGZyZWUKKyAgICAgICAgdGhlIFdhc21N
ZW1vcnkgd2Ugd2FudGVkIHRvIHVzZS4gY29sbGVjdEFsbEdhcmJhZ2UoKQorICAgICAgICB3aWxs
IGRvIHRoaXMgaWYgdGhlIEpTIG9iamVjdHMgd3JhcHBpbmcgV2FzbU1lbW9yeQorICAgICAgICBh
cmUgZGVhZC4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gbW92ZXMgdGhlIGluY3JlbWVudCBv
ZiB0aGUgYWxsb2NhdGVkRmFzdE1lbW9yaWVzCisgICAgICAgIGludGVnZXIgdG8gYmUgdGhyZWFk
IHNhZmUuCisKKyAgICAgICAgKiB3YXNtL1dhc21NZW1vcnkuY3BwOgorICAgICAgICAoSlNDOjpX
YXNtOjp0cnlHZXRGYXN0TWVtb3J5KToKKwogMjAxNy0wMy0xNSAgTWFyayBMYW0gIDxtYXJrLmxh
bUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IG1pc3NpbmcgZXhjZXB0aW9uIGNoZWNrcyBpbiBJ
bnRlcnByZXRlci5jcHAuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVt
b3J5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVt
b3J5LmNwcAkocmV2aXNpb24gMjEzOTgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbU1lbW9yeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOSwxNSArMTE5LDE1IEBAIGlubGlu
ZSBib29sIHRyeUdldEZhc3RNZW1vcnkoVk0mIHZtLCB2b2kKICAgICAvLyBJZiB3ZSBoYXZlIGFs
bG9jYXRlZCBhbGwgdGhlIGZhc3QgbWVtb3JpZXMuLi4gdG9vIGJhZC4KICAgICBpZiAoYWxsb2Nh
dGVkRmFzdE1lbW9yaWVzID09IG1heEZhc3RNZW1vcmllcykgewogICAgICAgICAvLyBUaGVyZSBp
cyBhIHJlYXNvbmFibGUgY2hhbmNlIHRoYXQgYW5vdGhlciBtb2R1bGUgaGFzIGRpZWQgYnV0IGhh
cyBub3QgYmVlbiBjb2xsZWN0ZWQgeWV0LiBEb24ndCBsb3NlIGhvcGUgeWV0IQotICAgICAgICB2
bS5oZWFwLmNvbGxlY3RTeW5jKCk7CisgICAgICAgIHZtLmhlYXAuY29sbGVjdEFsbEdhcmJhZ2Uo
KTsKICAgICAgICAgcmV0dXJuIGRlcXVlRmFzdE1lbW9yeSgpOwogICAgIH0KIAogICAgIGlmICht
bWFwQnl0ZXMoZmFzdE1lbW9yeU1hcHBlZEJ5dGVzLCBtZW1vcnkpKSB7CiAgICAgICAgIG1hcHBl
ZENhcGFjaXR5ID0gZmFzdE1lbW9yeU1hcHBlZEJ5dGVzOwogICAgICAgICBtb2RlID0gTWVtb3J5
OjpTaWduYWxpbmc7Ci0gICAgICAgIGFsbG9jYXRlZEZhc3RNZW1vcmllcysrOwogICAgICAgICBM
b2NrSG9sZGVyIGxvY2tlcihtZW1vcnlMb2NrKTsKKyAgICAgICAgYWxsb2NhdGVkRmFzdE1lbW9y
aWVzKys7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gYWN0aXZlRmFzdE1lbW9yaWVzKGxvY2tlciku
YWRkKG1lbW9yeSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdF
bnRyeSk7CiAgICAgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>