<?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>170219</bug_id>
          
          <creation_ts>2017-03-28 17:22:24 -0700</creation_ts>
          <short_desc>WebAssembly: option to crash if no fast memory is available</short_desc>
          <delta_ts>2017-03-29 09:04:56 -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>
          
          <blocked>159775</blocked>
    
    <blocked>170242</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="JF Bastien">jfbastien</reporter>
          <assigned_to name="JF Bastien">jfbastien</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1292216</commentid>
    <comment_count>0</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-28 17:22:24 -0700</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292219</commentid>
    <comment_count>1</comment_count>
      <attachid>305680</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-28 17:24:01 -0700</bug_when>
    <thetext>Created attachment 305680
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292224</commentid>
    <comment_count>2</comment_count>
      <attachid>305680</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-03-28 17:29:03 -0700</bug_when>
    <thetext>Comment on attachment 305680
patch

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

r=me

&gt; Source/JavaScriptCore/wasm/WasmMemory.cpp:124
&gt; +    if (!fastMemoryEnabled())

nit: if (UNLIKELY(...

&gt; Source/JavaScriptCore/wasm/WasmMemory.cpp:128
&gt; +    if (!vm.getCTIStub(throwExceptionFromWasmThunkGenerator).size())

nit: if (UNLIKELY(...

&gt; Source/JavaScriptCore/wasm/WasmMemory.cpp:129
&gt; +        goto fail;

&quot;goto&quot;!  One of my favorite coding constructs that gets so little use because peeps don&apos;t know how to use it right, and fear it.

&gt; Source/JavaScriptCore/wasm/WasmMemory.cpp:139
&gt; +        if (dequeFastMemory())

nit: if (LIKELY(...

&gt; Source/JavaScriptCore/wasm/WasmMemory.cpp:153
&gt; +    if (memory)

nit: if (LIKELY(memory))</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292276</commentid>
    <comment_count>3</comment_count>
      <attachid>305700</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-28 20:20:19 -0700</bug_when>
    <thetext>Created attachment 305700
patch

&gt; &gt; Source/JavaScriptCore/wasm/WasmMemory.cpp:139
&gt; &gt; +        if (dequeFastMemory())
&gt; 
&gt; nit: if (LIKELY(...
&gt; 
&gt; &gt; Source/JavaScriptCore/wasm/WasmMemory.cpp:153
&gt; &gt; +    if (memory)
&gt; 
&gt; nit: if (LIKELY(memory))

I don&apos;t know that these two are unlikely: they&apos;re not options or odd things. They&apos;re certainly undesirable, but I wouldn&apos;t call them unlikely.

The others you pointed out definitely are, so I marked them appropriately.

&gt; &gt; Source/JavaScriptCore/wasm/WasmMemory.cpp:129
&gt; &gt; +        goto fail;
&gt; 
&gt; &quot;goto&quot;!  One of my favorite coding constructs that gets so little use
&gt; because peeps don&apos;t know how to use it right, and fear it.

Am I using it right? :-p</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292280</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-03-28 20:48:08 -0700</bug_when>
    <thetext>(In reply to JF Bastien from comment #3)
&gt; Created attachment 305700 [details]
&gt; patch
&gt; 
&gt; &gt; &gt; Source/JavaScriptCore/wasm/WasmMemory.cpp:139
&gt; &gt; &gt; +        if (dequeFastMemory())
&gt; &gt; 
&gt; &gt; nit: if (LIKELY(...
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/wasm/WasmMemory.cpp:153
&gt; &gt; &gt; +    if (memory)
&gt; &gt; 
&gt; &gt; nit: if (LIKELY(memory))
&gt; 
&gt; I don&apos;t know that these two are unlikely: they&apos;re not options or odd things.
&gt; They&apos;re certainly undesirable, but I wouldn&apos;t call them unlikely.

I said &quot;LIKELY&quot;, not &quot;UNLIKELY&quot;.  That&apos;s because the alternative is to fail and crash.  They better be LIKELY.


&gt; The others you pointed out definitely are, so I marked them appropriately.
&gt; 
&gt; &gt; &gt; Source/JavaScriptCore/wasm/WasmMemory.cpp:129
&gt; &gt; &gt; +        goto fail;
&gt; &gt; 
&gt; &gt; &quot;goto&quot;!  One of my favorite coding constructs that gets so little use
&gt; &gt; because peeps don&apos;t know how to use it right, and fear it.
&gt; 
&gt; Am I using it right? :-p

Totally. =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292284</commentid>
    <comment_count>5</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-28 20:55:19 -0700</bug_when>
    <thetext>&gt; &gt; I don&apos;t know that these two are unlikely: they&apos;re not options or odd things.
&gt; &gt; They&apos;re certainly undesirable, but I wouldn&apos;t call them unlikely.
&gt; 
&gt; I said &quot;LIKELY&quot;, not &quot;UNLIKELY&quot;.  That&apos;s because the alternative is to fail
&gt; and crash.  They better be LIKELY.

It&apos;ll only crash if the option is set though. If unset, it&apos;ll just return false and generate a slow-mode memory. It&apos;s totally normal for this to fail, I just want an option to catch when it does so that I can benchmark knowing we used the fast version!


&gt; &gt; The others you pointed out definitely are, so I marked them appropriately.
&gt; &gt; 
&gt; &gt; &gt; &gt; Source/JavaScriptCore/wasm/WasmMemory.cpp:129
&gt; &gt; &gt; &gt; +        goto fail;
&gt; &gt; &gt; 
&gt; &gt; &gt; &quot;goto&quot;!  One of my favorite coding constructs that gets so little use
&gt; &gt; &gt; because peeps don&apos;t know how to use it right, and fear it.
&gt; &gt; 
&gt; &gt; Am I using it right? :-p
&gt; 
&gt; Totally. =)

🎉</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292286</commentid>
    <comment_count>6</comment_count>
      <attachid>305700</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-28 21:02:20 -0700</bug_when>
    <thetext>Comment on attachment 305700
patch

Clearing flags on attachment: 305700

Committed r214526: &lt;http://trac.webkit.org/changeset/214526&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292287</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-28 21:02:23 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292324</commentid>
    <comment_count>8</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-03-29 01:24:38 -0700</bug_when>
    <thetext>(In reply to JF Bastien from comment #3)
&gt; Created attachment 305700 [details]
&gt; patch
&gt; 
&gt; &gt; &gt; Source/JavaScriptCore/wasm/WasmMemory.cpp:139
&gt; &gt; &gt; +        if (dequeFastMemory())
&gt; &gt; 
&gt; &gt; nit: if (LIKELY(...
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/wasm/WasmMemory.cpp:153
&gt; &gt; &gt; +    if (memory)
&gt; &gt; 
&gt; &gt; nit: if (LIKELY(memory))
&gt; 
&gt; I don&apos;t know that these two are unlikely: they&apos;re not options or odd things.
&gt; They&apos;re certainly undesirable, but I wouldn&apos;t call them unlikely.
&gt; 
&gt; The others you pointed out definitely are, so I marked them appropriately.
&gt; 
&gt; &gt; &gt; Source/JavaScriptCore/wasm/WasmMemory.cpp:129
&gt; &gt; &gt; +        goto fail;
&gt; &gt; 
&gt; &gt; &quot;goto&quot;!  One of my favorite coding constructs that gets so little use
&gt; &gt; because peeps don&apos;t know how to use it right, and fear it.
&gt; 
&gt; Am I using it right? :-p
I think more idiomatic JSC style would be to name a lambda fail, and &apos;return fail()&apos; everywhere you &apos;goto fail&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292325</commentid>
    <comment_count>9</comment_count>
      <attachid>305680</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-03-29 01:25:15 -0700</bug_when>
    <thetext>Comment on attachment 305680
patch

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

&gt;&gt; Source/JavaScriptCore/wasm/WasmMemory.cpp:129
&gt;&gt; +        goto fail;
&gt; 
&gt; &quot;goto&quot;!  One of my favorite coding constructs that gets so little use because peeps don&apos;t know how to use it right, and fear it.

I don&apos;t think this is why people don&apos;t use &quot;goto&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292375</commentid>
    <comment_count>10</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-03-29 07:08:37 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #9)
&gt; &gt;&gt; Source/JavaScriptCore/wasm/WasmMemory.cpp:129
&gt; &gt;&gt; +        goto fail;
&gt; &gt; 
&gt; &gt; &quot;goto&quot;!  One of my favorite coding constructs that gets so little use because peeps don&apos;t know how to use it right, and fear it.
&gt; 
&gt; I don&apos;t think this is why people don&apos;t use &quot;goto&quot;

This was a semi-joke, and I was being over the top.  My point was that there are valid uses for it, and this was the main one IMHO.  Or at least, it was until ...

(In reply to Saam Barati from comment #8)
&gt; I think more idiomatic JSC style would be to name a lambda fail, and &apos;return
&gt; fail()&apos; everywhere you &apos;goto fail&apos;

I agree with this.  This is a much better solution.  I knew I should have scratch my head a little longer before saying yes to the gotos.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292394</commentid>
    <comment_count>11</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-03-29 08:26:29 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #10)
&gt; (In reply to Saam Barati from comment #9)
&gt; &gt; &gt;&gt; Source/JavaScriptCore/wasm/WasmMemory.cpp:129
&gt; &gt; &gt;&gt; +        goto fail;
&gt; &gt; &gt; 
&gt; &gt; &gt; &quot;goto&quot;!  One of my favorite coding constructs that gets so little use because peeps don&apos;t know how to use it right, and fear it.
&gt; &gt; 
&gt; &gt; I don&apos;t think this is why people don&apos;t use &quot;goto&quot;
&gt; 
&gt; This was a semi-joke, and I was being over the top. 
Yeah I know :) My response is a bit of a tease as well.

&gt; are valid uses for it, and this was the main one IMHO.  Or at least, it was
&gt; until ...
&gt; 
&gt; (In reply to Saam Barati from comment #8)
&gt; &gt; I think more idiomatic JSC style would be to name a lambda fail, and &apos;return
&gt; &gt; fail()&apos; everywhere you &apos;goto fail&apos;
&gt; 
&gt; I agree with this.  This is a much better solution.  I knew I should have
&gt; scratch my head a little longer before saying yes to the gotos.
Just to clarify, I&apos;m not trying to argue that one is better than the other. (I could make the argument that LLVM probably produces better code for what we care about in  a function like this using the goto variant. It&apos;ll either produce smaller code, or code with one fewer function call.) I&apos;m just arguing it&apos;s more in line with JSC style not to use goto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292408</commentid>
    <comment_count>12</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-29 09:04:56 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #11)
&gt; (In reply to Mark Lam from comment #10)
&gt; &gt; (In reply to Saam Barati from comment #9)
&gt; &gt; &gt; &gt;&gt; Source/JavaScriptCore/wasm/WasmMemory.cpp:129
&gt; &gt; &gt; &gt;&gt; +        goto fail;
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &quot;goto&quot;!  One of my favorite coding constructs that gets so little use because peeps don&apos;t know how to use it right, and fear it.
&gt; &gt; &gt; 
&gt; &gt; &gt; I don&apos;t think this is why people don&apos;t use &quot;goto&quot;
&gt; &gt; 
&gt; &gt; This was a semi-joke, and I was being over the top. 
&gt; Yeah I know :) My response is a bit of a tease as well.
&gt; 
&gt; &gt; are valid uses for it, and this was the main one IMHO.  Or at least, it was
&gt; &gt; until ...
&gt; &gt; 
&gt; &gt; (In reply to Saam Barati from comment #8)
&gt; &gt; &gt; I think more idiomatic JSC style would be to name a lambda fail, and &apos;return
&gt; &gt; &gt; fail()&apos; everywhere you &apos;goto fail&apos;
&gt; &gt; 
&gt; &gt; I agree with this.  This is a much better solution.  I knew I should have
&gt; &gt; scratch my head a little longer before saying yes to the gotos.
&gt; Just to clarify, I&apos;m not trying to argue that one is better than the other.
&gt; (I could make the argument that LLVM probably produces better code for what
&gt; we care about in  a function like this using the goto variant. It&apos;ll either
&gt; produce smaller code, or code with one fewer function call.) I&apos;m just
&gt; arguing it&apos;s more in line with JSC style not to use goto.

Lambda is indeed nicer. Will fix:
  https://bugs.webkit.org/show_bug.cgi?id=170242

goto is just a reflex for my 2000-era C++, and years of C programming :)
I can post-modernize my C++.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305680</attachid>
            <date>2017-03-28 17:24:01 -0700</date>
            <delta_ts>2017-03-28 20:20:19 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-crashIfWebAssemblyCantFastMemory.patch</filename>
            <type>text/plain</type>
            <size>5034</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSA3MTA4M2NjOTZlODRhYWRlMjk5YzAyMTdmYjU3ZWJlZThiZGVmN2RiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUdWUsIDI4IE1hciAyMDE3IDE3OjIzOjM2IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gY3Jhc2hJ
ZldlYkFzc2VtYmx5Q2FudEZhc3RNZW1vcnkKCi0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZyAgICAgICAgICAgfCAxMiArKysrKysrKysrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zLmggICB8ICAxICsKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21NZW1vcnkuY3BwIHwgNDAgKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQogMyBmaWxl
cyBjaGFuZ2VkLCA0MSBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZwppbmRleCBlMzNhNmNjLi43ZDlhMjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNy0wMy0yOCAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBh
cHBsZS5jb20+CisKKyAgICAgICAgV2ViQXNzZW1ibHk6IG9wdGlvbiB0byBjcmFzaCBpZiBubyBm
YXN0IG1lbW9yeSBpcyBhdmFpbGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3MDIxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6CisgICAgICAgICogd2FzbS9XYXNt
TWVtb3J5LmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6d2ViQXNzZW1ibHlDb3VsZG50R2V0RmFz
dE1lbW9yeSk6CisgICAgICAgIChKU0M6Oldhc206OnRyeUdldEZhc3RNZW1vcnkpOgorCiAyMDE3
LTAzLTI4ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IFdlYkFzc2VtYmx5OiBNYWtlIFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlL2NvbXBpbGUgdHJ1bHkg
YXN5bmNocm9ub3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKaW5kZXgg
YTBkOTEwOS4uZThhYjFlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMu
aApAQCAtNDM0LDYgKzQzNCw3IEBAIHR5cGVkZWYgY29uc3QgY2hhciogb3B0aW9uU3RyaW5nOwog
ICAgIFwKICAgICB2KGJvb2wsIHNpbXVsYXRlV2ViQXNzZW1ibHlMb3dNZW1vcnksIGZhbHNlLCBO
b3JtYWwsICJJZiB0cnVlLCB0aGUgTWVtb3J5IG9iamVjdCB3b24ndCBtbWFwIHRoZSBmdWxsICdt
YXhpbXVtJyByYW5nZSBhbmQgaW5zdGVhZCB3aWxsIGFsbG9jYXRlIHRoZSBtaW5pbXVtIHJlcXVp
cmVkIGFtb3VudC4iKSBcCiAgICAgdihib29sLCB1c2VXZWJBc3NlbWJseUZhc3RNZW1vcnksIHRy
dWUsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwgdHJ5IHRvIHVzZSBhIDMyLWJpdCBhZGRyZXNz
IHNwYWNlIHdpdGggYSBzaWduYWwgaGFuZGxlciB0byBib3VuZHMgY2hlY2sgd2FzbSBtZW1vcnku
IikgXAorICAgIHYoYm9vbCwgY3Jhc2hJZldlYkFzc2VtYmx5Q2FudEZhc3RNZW1vcnksIGZhbHNl
LCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIGNyYXNoIGlmIHdlIGNhbid0IG9idGFpbiBmYXN0
IG1lbW9yeSBmb3Igd2FzbS4iKSBcCiAgICAgdihib29sLCB1c2VXZWJBc3NlbWJseUZhc3RUTFMs
IHRydWUsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwgdHJ5IHRvIHVzZSBmYXN0IHRocmVhZC1s
b2NhbCBzdG9yYWdlIGlmIGF2YWlsYWJsZSBvbiB0aGUgY3VycmVudCBwbGF0Zm9ybS4iKQogCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnkuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5jcHAKaW5kZXggM2QxNzZjOC4u
ODFhMTg0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9y
eS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5jcHAKQEAg
LTQyLDYgKzQyLDExIEBAIG5hbWVzcGFjZSB7CiBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsK
IH0KIAorc3RhdGljIE5FVkVSX0lOTElORSBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHZvaWQgd2Vi
QXNzZW1ibHlDb3VsZG50R2V0RmFzdE1lbW9yeSgpCit7CisgICAgQ1JBU0goKTsKK30KKwogaW5s
aW5lIGJvb2wgbW1hcEJ5dGVzKHNpemVfdCBieXRlcywgdm9pZComIG1lbW9yeSkKIHsKICAgICBk
YXRhTG9nSWYodmVyYm9zZSwgIkF0dGVtcHRpbmcgdG8gbW1hcCAiLCBieXRlcywgIiBieXRlczog
Iik7CkBAIC05OCwxNiArMTAzLDYgQEAgY29uc3QgSGFzaFNldDx2b2lkKj4mIHZpZXdBY3RpdmVG
YXN0TWVtb3JpZXMoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlcikKIAogaW5saW5lIGJvb2wg
dHJ5R2V0RmFzdE1lbW9yeShWTSYgdm0sIHZvaWQqJiBtZW1vcnksIHNpemVfdCYgbWFwcGVkQ2Fw
YWNpdHksIE1lbW9yeU1vZGUmIG1vZGUpCiB7Ci0gICAgLy8gV2UgbWlnaHQgR0MgaGVyZSBzbyB3
ZSBzaG91bGQgYmUgaG9sZGluZyB0aGUgQVBJIGxvY2suCi0gICAgLy8gRklYTUU6IFdlIHNob3Vs
ZCBiZSBhYmxlIHRvIHN5bmNyb25vdXNseSB0cmlnZ2VyIHRoZSBHQyBmcm9tIGFub3RoZXIgdGhy
ZWFkLgotICAgIEFTU0VSVCh2bS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKLSAg
ICBpZiAoIWZhc3RNZW1vcnlFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IC8vIFdlIG5lZWQgdG8gYmUgc3VyZSB3ZSBoYXZlIGEgc3R1YiBwcmlvciB0byBydW5uaW5nIGNv
ZGUuCi0gICAgaWYgKCF2bS5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJvbVdhc21UaHVua0dl
bmVyYXRvcikuc2l6ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICBhdXRvIGRlcXVl
RmFzdE1lbW9yeSA9IFsmXSAoKSAtPiBib29sIHsKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3Vs
ZCBldmVudHVhbGx5IHJldHVybiB0aGVzZSB0byB0aGUgT1MgaWYgd2UgZ28gc29tZSBudW1iZXIg
b2YgR0NzCiAgICAgICAgIC8vIHdpdGhvdXQgdXNpbmcgdGhlbS4KQEAgLTEyMyw2ICsxMTgsMTYg
QEAgaW5saW5lIGJvb2wgdHJ5R2V0RmFzdE1lbW9yeShWTSYgdm0sIHZvaWQqJiBtZW1vcnksIHNp
emVfdCYgbWFwcGVkQ2FwYWNpdHksIE1lbW8KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH07
CiAKKyAgICAvLyBXZSBtaWdodCBHQyBoZXJlIHNvIHdlIHNob3VsZCBiZSBob2xkaW5nIHRoZSBB
UEkgbG9jay4KKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gc3luY3Jvbm91c2x5
IHRyaWdnZXIgdGhlIEdDIGZyb20gYW5vdGhlciB0aHJlYWQuCisgICAgQVNTRVJUKHZtLmN1cnJl
bnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOworICAgIGlmICghZmFzdE1lbW9yeUVuYWJsZWQo
KSkKKyAgICAgICAgZ290byBmYWlsOworCisgICAgLy8gV2UgbmVlZCB0byBiZSBzdXJlIHdlIGhh
dmUgYSBzdHViIHByaW9yIHRvIHJ1bm5pbmcgY29kZS4KKyAgICBpZiAoIXZtLmdldENUSVN0dWIo
dGhyb3dFeGNlcHRpb25Gcm9tV2FzbVRodW5rR2VuZXJhdG9yKS5zaXplKCkpCisgICAgICAgIGdv
dG8gZmFpbDsKKwogICAgIEFTU0VSVChhbGxvY2F0ZWRGYXN0TWVtb3JpZXMgPD0gbWF4RmFzdE1l
bW9yaWVzKTsKICAgICBpZiAoZGVxdWVGYXN0TWVtb3J5KCkpCiAgICAgICAgIHJldHVybiB0cnVl
OwpAQCAtMTMxLDcgKzEzNiw5IEBAIGlubGluZSBib29sIHRyeUdldEZhc3RNZW1vcnkoVk0mIHZt
LCB2b2lkKiYgbWVtb3J5LCBzaXplX3QmIG1hcHBlZENhcGFjaXR5LCBNZW1vCiAgICAgaWYgKGFs
bG9jYXRlZEZhc3RNZW1vcmllcyA9PSBtYXhGYXN0TWVtb3JpZXMpIHsKICAgICAgICAgLy8gVGhl
cmUgaXMgYSByZWFzb25hYmxlIGNoYW5jZSB0aGF0IGFub3RoZXIgbW9kdWxlIGhhcyBkaWVkIGJ1
dCBoYXMgbm90IGJlZW4gY29sbGVjdGVkIHlldC4gRG9uJ3QgbG9zZSBob3BlIHlldCEKICAgICAg
ICAgdm0uaGVhcC5jb2xsZWN0QWxsR2FyYmFnZSgpOwotICAgICAgICByZXR1cm4gZGVxdWVGYXN0
TWVtb3J5KCk7CisgICAgICAgIGlmIChkZXF1ZUZhc3RNZW1vcnkoKSkKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICBnb3RvIGZhaWw7CiAgICAgfQogCiAgICAgaWYgKG1tYXBCeXRl
cyhmYXN0TWVtb3J5TWFwcGVkQnl0ZXMsIG1lbW9yeSkpIHsKQEAgLTE0Miw3ICsxNDksMTYgQEAg
aW5saW5lIGJvb2wgdHJ5R2V0RmFzdE1lbW9yeShWTSYgdm0sIHZvaWQqJiBtZW1vcnksIHNpemVf
dCYgbWFwcGVkQ2FwYWNpdHksIE1lbW8KICAgICAgICAgYXV0byByZXN1bHQgPSBhY3RpdmVGYXN0
TWVtb3JpZXMobG9ja2VyKS5hZGQobWVtb3J5KTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1
bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKICAgICB9Ci0gICAgcmV0dXJuIG1lbW9yeTsKKworICAg
IGlmIChtZW1vcnkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGdvdG8gZmFpbDsKKworZmFp
bDoKKyAgICBpZiAoT3B0aW9uczo6Y3Jhc2hJZldlYkFzc2VtYmx5Q2FudEZhc3RNZW1vcnkoKSkK
KyAgICAgICAgd2ViQXNzZW1ibHlDb3VsZG50R2V0RmFzdE1lbW9yeSgpOworCisgICAgcmV0dXJu
IGZhbHNlOwogfQogCiBpbmxpbmUgdm9pZCByZWxlYXNlRmFzdE1lbW9yeSh2b2lkKiYgbWVtb3J5
LCBzaXplX3Qgd3JpdGFibGVTaXplLCBzaXplX3QgbWFwcGVkQ2FwYWNpdHksIE1lbW9yeU1vZGUg
bW9kZSkKLS0gCjIuMTAuMQoK
</data>
<flag name="review"
          id="327110"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305700</attachid>
            <date>2017-03-28 20:20:19 -0700</date>
            <delta_ts>2017-03-28 21:02:20 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-crashIfWebAssemblyCantFastMemory.patch</filename>
            <type>text/plain</type>
            <size>5087</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSA4ODQ2OWVjNDQwYmMxZTU4ZTgyZDY1Y2YzZmE2NmE3OWQ0ZDFlNWM4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUdWUsIDI4IE1hciAyMDE3IDIwOjE5OjI4IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gY3Jhc2hJ
ZldlYkFzc2VtYmx5Q2FudEZhc3RNZW1vcnkKCi0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZyAgICAgICAgICAgfCAxMiArKysrKysrKysrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zLmggICB8ICAxICsKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21NZW1vcnkuY3BwIHwgNDAgKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQogMyBmaWxl
cyBjaGFuZ2VkLCA0MSBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZwppbmRleCA4NzEzODNiLi4xNGE5YmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNy0wMy0yOCAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBh
cHBsZS5jb20+CisKKyAgICAgICAgV2ViQXNzZW1ibHk6IG9wdGlvbiB0byBjcmFzaCBpZiBubyBm
YXN0IG1lbW9yeSBpcyBhdmFpbGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3MDIxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE1hcmsgTGFtLgor
CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6CisgICAgICAgICogd2FzbS9XYXNtTWVtb3J5
LmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6d2ViQXNzZW1ibHlDb3VsZG50R2V0RmFzdE1lbW9y
eSk6CisgICAgICAgIChKU0M6Oldhc206OnRyeUdldEZhc3RNZW1vcnkpOgorCiAyMDE3LTAzLTI4
ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBUaGUgTXV0YXRvciBz
aG91bGQgbm90IGJlIGFibGUgdG8gc3RlYWwgdGhlIGNvbm4gaWYgdGhlIENvbGxlY3RvciBoYXNu
J3QgcmVhY2hlZCB0aGUgTm90UnVubmluZyBwaGFzZSB5ZXQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zLmgKaW5kZXggYTBkOTEwOS4uZThhYjFlZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaApAQCAtNDM0LDYgKzQzNCw3IEBAIHR5cGVkZWYgY29u
c3QgY2hhciogb3B0aW9uU3RyaW5nOwogICAgIFwKICAgICB2KGJvb2wsIHNpbXVsYXRlV2ViQXNz
ZW1ibHlMb3dNZW1vcnksIGZhbHNlLCBOb3JtYWwsICJJZiB0cnVlLCB0aGUgTWVtb3J5IG9iamVj
dCB3b24ndCBtbWFwIHRoZSBmdWxsICdtYXhpbXVtJyByYW5nZSBhbmQgaW5zdGVhZCB3aWxsIGFs
bG9jYXRlIHRoZSBtaW5pbXVtIHJlcXVpcmVkIGFtb3VudC4iKSBcCiAgICAgdihib29sLCB1c2VX
ZWJBc3NlbWJseUZhc3RNZW1vcnksIHRydWUsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwgdHJ5
IHRvIHVzZSBhIDMyLWJpdCBhZGRyZXNzIHNwYWNlIHdpdGggYSBzaWduYWwgaGFuZGxlciB0byBi
b3VuZHMgY2hlY2sgd2FzbSBtZW1vcnkuIikgXAorICAgIHYoYm9vbCwgY3Jhc2hJZldlYkFzc2Vt
Ymx5Q2FudEZhc3RNZW1vcnksIGZhbHNlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIGNyYXNo
IGlmIHdlIGNhbid0IG9idGFpbiBmYXN0IG1lbW9yeSBmb3Igd2FzbS4iKSBcCiAgICAgdihib29s
LCB1c2VXZWJBc3NlbWJseUZhc3RUTFMsIHRydWUsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwg
dHJ5IHRvIHVzZSBmYXN0IHRocmVhZC1sb2NhbCBzdG9yYWdlIGlmIGF2YWlsYWJsZSBvbiB0aGUg
Y3VycmVudCBwbGF0Zm9ybS4iKQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21NZW1vcnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1l
bW9yeS5jcHAKaW5kZXggM2QxNzZjOC4uMmI2NTIxMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbU1lbW9yeS5jcHAKQEAgLTQyLDYgKzQyLDExIEBAIG5hbWVzcGFjZSB7CiBjb25z
dCBib29sIHZlcmJvc2UgPSBmYWxzZTsKIH0KIAorc3RhdGljIE5FVkVSX0lOTElORSBOT19SRVRV
Uk5fRFVFX1RPX0NSQVNIIHZvaWQgd2ViQXNzZW1ibHlDb3VsZG50R2V0RmFzdE1lbW9yeSgpCit7
CisgICAgQ1JBU0goKTsKK30KKwogaW5saW5lIGJvb2wgbW1hcEJ5dGVzKHNpemVfdCBieXRlcywg
dm9pZComIG1lbW9yeSkKIHsKICAgICBkYXRhTG9nSWYodmVyYm9zZSwgIkF0dGVtcHRpbmcgdG8g
bW1hcCAiLCBieXRlcywgIiBieXRlczogIik7CkBAIC05OCwxNiArMTAzLDYgQEAgY29uc3QgSGFz
aFNldDx2b2lkKj4mIHZpZXdBY3RpdmVGYXN0TWVtb3JpZXMoY29uc3QgQWJzdHJhY3RMb2NrZXIm
IGxvY2tlcikKIAogaW5saW5lIGJvb2wgdHJ5R2V0RmFzdE1lbW9yeShWTSYgdm0sIHZvaWQqJiBt
ZW1vcnksIHNpemVfdCYgbWFwcGVkQ2FwYWNpdHksIE1lbW9yeU1vZGUmIG1vZGUpCiB7Ci0gICAg
Ly8gV2UgbWlnaHQgR0MgaGVyZSBzbyB3ZSBzaG91bGQgYmUgaG9sZGluZyB0aGUgQVBJIGxvY2su
Ci0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRvIHN5bmNyb25vdXNseSB0cmlnZ2Vy
IHRoZSBHQyBmcm9tIGFub3RoZXIgdGhyZWFkLgotICAgIEFTU0VSVCh2bS5jdXJyZW50VGhyZWFk
SXNIb2xkaW5nQVBJTG9jaygpKTsKLSAgICBpZiAoIWZhc3RNZW1vcnlFbmFibGVkKCkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIFdlIG5lZWQgdG8gYmUgc3VyZSB3ZSBoYXZlIGEg
c3R1YiBwcmlvciB0byBydW5uaW5nIGNvZGUuCi0gICAgaWYgKCF2bS5nZXRDVElTdHViKHRocm93
RXhjZXB0aW9uRnJvbVdhc21UaHVua0dlbmVyYXRvcikuc2l6ZSgpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KICAgICBhdXRvIGRlcXVlRmFzdE1lbW9yeSA9IFsmXSAoKSAtPiBib29sIHsKICAg
ICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBldmVudHVhbGx5IHJldHVybiB0aGVzZSB0byB0aGUg
T1MgaWYgd2UgZ28gc29tZSBudW1iZXIgb2YgR0NzCiAgICAgICAgIC8vIHdpdGhvdXQgdXNpbmcg
dGhlbS4KQEAgLTEyMyw2ICsxMTgsMTYgQEAgaW5saW5lIGJvb2wgdHJ5R2V0RmFzdE1lbW9yeShW
TSYgdm0sIHZvaWQqJiBtZW1vcnksIHNpemVfdCYgbWFwcGVkQ2FwYWNpdHksIE1lbW8KICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH07CiAKKyAgICAvLyBXZSBtaWdodCBHQyBoZXJlIHNvIHdl
IHNob3VsZCBiZSBob2xkaW5nIHRoZSBBUEkgbG9jay4KKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IGJlIGFibGUgdG8gc3luY3Jvbm91c2x5IHRyaWdnZXIgdGhlIEdDIGZyb20gYW5vdGhlciB0aHJl
YWQuCisgICAgQVNTRVJUKHZtLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOworICAg
IGlmIChVTkxJS0VMWSghZmFzdE1lbW9yeUVuYWJsZWQoKSkpCisgICAgICAgIGdvdG8gZmFpbDsK
KworICAgIC8vIFdlIG5lZWQgdG8gYmUgc3VyZSB3ZSBoYXZlIGEgc3R1YiBwcmlvciB0byBydW5u
aW5nIGNvZGUuCisgICAgaWYgKFVOTElLRUxZKCF2bS5nZXRDVElTdHViKHRocm93RXhjZXB0aW9u
RnJvbVdhc21UaHVua0dlbmVyYXRvcikuc2l6ZSgpKSkKKyAgICAgICAgZ290byBmYWlsOworCiAg
ICAgQVNTRVJUKGFsbG9jYXRlZEZhc3RNZW1vcmllcyA8PSBtYXhGYXN0TWVtb3JpZXMpOwogICAg
IGlmIChkZXF1ZUZhc3RNZW1vcnkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMzEsNyAr
MTM2LDkgQEAgaW5saW5lIGJvb2wgdHJ5R2V0RmFzdE1lbW9yeShWTSYgdm0sIHZvaWQqJiBtZW1v
cnksIHNpemVfdCYgbWFwcGVkQ2FwYWNpdHksIE1lbW8KICAgICBpZiAoYWxsb2NhdGVkRmFzdE1l
bW9yaWVzID09IG1heEZhc3RNZW1vcmllcykgewogICAgICAgICAvLyBUaGVyZSBpcyBhIHJlYXNv
bmFibGUgY2hhbmNlIHRoYXQgYW5vdGhlciBtb2R1bGUgaGFzIGRpZWQgYnV0IGhhcyBub3QgYmVl
biBjb2xsZWN0ZWQgeWV0LiBEb24ndCBsb3NlIGhvcGUgeWV0IQogICAgICAgICB2bS5oZWFwLmNv
bGxlY3RBbGxHYXJiYWdlKCk7Ci0gICAgICAgIHJldHVybiBkZXF1ZUZhc3RNZW1vcnkoKTsKKyAg
ICAgICAgaWYgKGRlcXVlRmFzdE1lbW9yeSgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIGdvdG8gZmFpbDsKICAgICB9CiAKICAgICBpZiAobW1hcEJ5dGVzKGZhc3RNZW1vcnlN
YXBwZWRCeXRlcywgbWVtb3J5KSkgewpAQCAtMTQyLDcgKzE0OSwxNiBAQCBpbmxpbmUgYm9vbCB0
cnlHZXRGYXN0TWVtb3J5KFZNJiB2bSwgdm9pZComIG1lbW9yeSwgc2l6ZV90JiBtYXBwZWRDYXBh
Y2l0eSwgTWVtbwogICAgICAgICBhdXRvIHJlc3VsdCA9IGFjdGl2ZUZhc3RNZW1vcmllcyhsb2Nr
ZXIpLmFkZChtZW1vcnkpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0Lmlz
TmV3RW50cnkpOwogICAgIH0KLSAgICByZXR1cm4gbWVtb3J5OworCisgICAgaWYgKG1lbW9yeSkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZ290byBmYWlsOworCitmYWlsOgorICAgIGlmIChV
TkxJS0VMWShPcHRpb25zOjpjcmFzaElmV2ViQXNzZW1ibHlDYW50RmFzdE1lbW9yeSgpKSkKKyAg
ICAgICAgd2ViQXNzZW1ibHlDb3VsZG50R2V0RmFzdE1lbW9yeSgpOworCisgICAgcmV0dXJuIGZh
bHNlOwogfQogCiBpbmxpbmUgdm9pZCByZWxlYXNlRmFzdE1lbW9yeSh2b2lkKiYgbWVtb3J5LCBz
aXplX3Qgd3JpdGFibGVTaXplLCBzaXplX3QgbWFwcGVkQ2FwYWNpdHksIE1lbW9yeU1vZGUgbW9k
ZSkKLS0gCjIuOS4zCgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>