<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Aug 28, 2018, at 12:09 PM, Yusuke Suzuki <<a href="mailto:yusukesuzuki@slowstart.org" class="">yusukesuzuki@slowstart.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class=""><br class=""></div><div class=""><br class=""><div class="gmail_quote"><div dir="ltr" class="">On Wed, Aug 29, 2018 at 3:58 Filip Pizlo <<a href="mailto:fpizlo@apple.com" class="">fpizlo@apple.com</a>> wrote:<br class=""></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word" class=""><br class=""><div class=""><blockquote type="cite" class=""><div class="">On Aug 28, 2018, at 11:56 AM, Yusuke Suzuki <<a href="mailto:yusukesuzuki@slowstart.org" target="_blank" class="">yusukesuzuki@slowstart.org</a>> wrote:</div><br class="m_6595330275134875216Apple-interchange-newline"><div class=""><br class="m_6595330275134875216Apple-interchange-newline"><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" class=""><div class="gmail_quote" style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><div dir="ltr" class="">On Wed, Aug 29, 2018 at 3:49 Yusuke Suzuki <<a href="mailto:yusukesuzuki@slowstart.org" target="_blank" class="">yusukesuzuki@slowstart.org</a>> wrote:<br class=""></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class=""><br class=""></div><div class=""><br class=""><div class="gmail_quote"><div dir="ltr" class="">On Wed, Aug 29, 2018 at 3:27 Filip Pizlo <<a href="mailto:fpizlo@apple.com" target="_blank" class="">fpizlo@apple.com</a>> wrote:<br class=""></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word" class=""><br class=""><div class=""><blockquote type="cite" class=""><div class="">On Aug 28, 2018, at 11:25 AM, Yusuke Suzuki <<a href="mailto:yusukesuzuki@slowstart.org" target="_blank" class="">yusukesuzuki@slowstart.org</a>> wrote:</div><br class="m_6595330275134875216m_-6257885355299230278m_-9031678779341368873Apple-interchange-newline"><div class=""><div class=""><div dir="auto" class="">Thanks!</div></div><div class=""><br class=""><div class="gmail_quote"><div dir="ltr" class="">On Wed, Aug 29, 2018 at 3:22 Filip Pizlo <<a href="mailto:fpizlo@apple.com" target="_blank" class="">fpizlo@apple.com</a>> wrote:<br class=""></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word" class="">I don’t like this proposal.<div class=""><br class=""></div><div class="">If we are running low on memory, we should switch to bounds checked memory.</div></div></blockquote><div dir="auto" class=""><br class=""></div><div dir="auto" class="">How about using bound checking mode exclusively for low environment?<br class=""></div></div></div></div></blockquote><div class=""><br class=""></div><div class="">That would mean that, paradoxically, having a machine with a lot of memory means being able to spawn fewer wasm instances.</div><div class=""><br class=""></div><div class="">We want to support lightweight wasm instances because it wouldn’t be good to rule that out as a use case.</div></div></div></blockquote><div dir="auto" class=""><br class=""></div><div dir="auto" class="">Hmmm, can we compile the BBQ phase / initial wasm code without knowing the attached memory’s mode? The current strategy basically defers compilation of wasm module until the memory mode is found.</div><div dir="auto" class="">Because of this, WebAssembly.compile is not so meaningful in our implementation right now...</div><div dir="auto" class="">And wasm ES6 module can import memory externally. This means that we cannot start wasm compilation after the memory mode of the impprted memory (described in the imported modulr) is downloaded, analyzed and found.</div></div></div></blockquote><div dir="auto" class=""><br class=""></div><div dir="auto" class="">How about always compiling BBQ code with bound checking mode?</div><div dir="auto" class="">It should work with signaling memory with small / no tweaks. And OMG code will be compiled based on the memory mode attached to the module.</div><div dir="auto" class="">Since BBQ -> OMG function call should be linked, we need to call appropriate func for the running memory mode, but it would not introduce significant complexity.</div></div></div></blockquote><div class=""><br class=""></div><div class="">What complexity are you trying to fix, specifically?</div><div class=""></div></div></div></blockquote><div dir="auto" class=""><br class=""></div><div dir="auto" class="">What I want is starting compilation before the memory is attached a.k.a. instantiated)</div><div dir="auto" class=""><br class=""></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word" class=""><div class=""><div class=""><br class=""></div><div class="">I think that what we really want is an interpreter as our baseline.  Then tier-up to BBQ or OMG from there.  In that world, I don’t think any of this matters.</div></div></div></blockquote><div dir="auto" class=""><br class=""></div><div dir="auto" class="">Does this interpreter execute wasm binary directly? If so, we can skip compiling and all should work well!</div><div dir="auto" class=""><br class=""></div><div dir="auto" class="">Even if we want some own bytecode (like stack VM to register VM etc.), it is ok if the compilation result is not tied to the memory mode.</div></div></div></div></blockquote><div><br class=""></div><div>I don’t know if it will execute the wasm binary directly, but whatever bytecode it runs could be dissociated from memory mode.</div><div><br class=""></div><div>-Filip</div><div><br class=""></div><br class=""><blockquote type="cite" class=""><div class=""><div class=""><div class="gmail_quote"><div dir="auto" class=""><br class=""></div><div dir="auto" class="">If the compilation result is tied to the memory mode, then we still need to defer the compilation until the memory mode is attached.</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word" class=""><div class=""><div class=""></div></div></div></blockquote><div dir="auto" class=""><br class=""></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word" class=""><div class=""><div class=""></div></div></div><div style="word-wrap:break-word" class=""><div class=""><div class=""><br class=""></div><div class="">-Filip</div><div class=""><br class=""></div><br class=""><blockquote type="cite" class=""><div class=""><div class="gmail_quote" style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><div dir="auto" class=""><br class=""></div><div dir="auto" class=""><br class=""></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class=""><div class="gmail_quote"><div dir="auto" class=""></div></div></div><div class=""><div class="gmail_quote"><div dir="auto" class=""><br class=""></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word" class=""><div class=""><div class=""></div></div></div><div style="word-wrap:break-word" class=""><div class=""><div class=""><br class=""></div><div class="">-Filip</div><div class=""><br class=""></div><br class=""><blockquote type="cite" class=""><div class=""><div class=""><div class="gmail_quote"><div dir="auto" class=""><br class=""></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word" class=""><div class=""></div><div class=""><br class=""></div><div class="">-Filip</div><div class=""><br class=""></div><div class=""><br class=""><div class=""><blockquote type="cite" class=""></blockquote></div></div></div><div style="word-wrap:break-word" class=""><div class=""><div class=""><blockquote type="cite" class=""><div class="">On Aug 28, 2018, at 11:21 AM, Yusuke Suzuki <<a href="mailto:yusukesuzuki@slowstart.org" target="_blank" class="">yusukesuzuki@slowstart.org</a>> wrote:</div><br class="m_6595330275134875216m_-6257885355299230278m_-9031678779341368873m_962660560005376214Apple-interchange-newline"></blockquote></div></div></div><div style="word-wrap:break-word" class=""><div class=""><div class=""><blockquote type="cite" class=""><div class=""></div></blockquote></div></div></div><div style="word-wrap:break-word" class=""><div class=""><div class=""><blockquote type="cite" class=""><div class=""><div dir="ltr" class=""><div class="">Posted this mail to webkit-dev mailing list too :)</div><div class=""><br class=""></div><div class=""><div class="gmail_quote"><div dir="ltr" class="">On Wed, Aug 29, 2018 at 3:19 AM Yusuke Suzuki <<a href="mailto:yusukesuzuki@slowstart.org" target="_blank" class="">yusukesuzuki@slowstart.org</a>> wrote:<br class=""></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr" class=""><div class="">Hi JSC folks,</div><div class=""><br class=""></div><div class="">In Wasm supported environment, our MemoryMode is a bit dynamic.</div><div class="">When we fail to allocate WasmMemory for signaling mode, we fall back to the bound checking memory instead.</div><div class=""><br class=""></div><div class="">But Wasm code compiled for signaling / bound checking is incompatible. If the code is compiled</div><div class="">as signaling mode, and if we attach the memory for bound checking, we need to recompile the</div><div class="">code for bound checking mode. This introduces significant complexity to our wasm compilation.</div><div class="">And our WebAssembly.compile is not basically compiling: it is just validating.</div><div class="">Actual compiling needs to be deferred until the memory is attached by instantiating.</div><div class="">It is not good when we would like to share WasmModule among multiple wasm threads / workers in the future, since the "compiled" Wasm module is not actually compiled.<br class=""></div><div class=""><br class=""></div><div class="">So, my proposal is, can we explore the way to exclusively support one of MemoryMode in a certain architecture?</div><div class="">For example, in x64, enable signaling mode, and we report OOM errors if we fail to allocate WasmMemory with signaling mode.<br class=""></div><div class=""><br class=""></div><div class="">Best regards,</div><div class="">Yusuke Suzuki<br class=""></div></div></blockquote></div></div></div></div></blockquote></div></div></div><div style="word-wrap:break-word" class=""><div class=""><div class=""><blockquote type="cite" class=""><div class="">_______________________________________________<br class="">webkit-dev mailing list<br class=""><a href="mailto:webkit-dev@lists.webkit.org" target="_blank" class="">webkit-dev@lists.webkit.org</a><br class=""><a href="https://lists.webkit.org/mailman/listinfo/webkit-dev" target="_blank" class="">https://lists.webkit.org/mailman/listinfo/webkit-dev</a></div></blockquote></div></div></div></blockquote></div></div></div></blockquote></div></div></blockquote></div></div></blockquote></div></div></blockquote></div><br class=""></div></blockquote></div></div>
</div></blockquote></div><br class=""></body></html>