<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">Yusuke Suzuki - That's awesome! thanks for taking the time to do this. I will merge your changes to my fork, I'm really curious on how this will affect compilation times and binary size.</div><div dir="ltr"><br></div>Filip Pizlo, Saam Barati - Thanks! I will create the bugs and patches as soon as I can, it's just the holidays here so I haven't had enough time to work :)<br></div></div><br><div class="gmail_quote"><div dir="ltr">On Sat, Sep 22, 2018 at 8:36 AM Yusuke Suzuki <<a href="mailto:yusukesuzuki@slowstart.org">yusukesuzuki@slowstart.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr">On Sun, Sep 16, 2018 at 6:09 PM Koby Boyango <koby.b@mce.systems> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div>Thanks for taking the time to look into the project :)</div><div><br></div><div>
<span class="gmail-m_7967123743842931495gmail-m_6084426053455191823m_1041104863187321813gmail-im">Filip</span> - I would love to. Should I create one bug for all of the patches, or a bug for each patch? <br></div><div>Also, there is an existing bug that I've reported a while ago, but worked around it for now: <a href="https://bugs.webkit.org/show_bug.cgi?id=184232" target="_blank">https://bugs.webkit.org/show_bug.cgi?id=184232</a>. It isn't relevant in newer versions of node (it came from node's Buffer constructor, which have changed since), but I'll still be happy to send a patch if needed.<br></div><div dir="ltr"><br></div><div dir="ltr">Yusuke - It's interesting to compare, especially on an iOS device. I will also try to do some measurements :) Do you have a 
benchmark you recommend?<br></div><div>But assuming it is worth it, enabling LLInt ASM without the JIT would be great as it would probably reduce the binary size and compilation time by quite a bit.  <br></div><div dir="ltr"> NativeScript is also using it without the JIT (and they link to an article containing some benchmarks), so they would profit from this too.<br></div><div dir="ltr"><a href="https://github.com/NativeScript/ios-runtime/commit/1528ed50f85998147b190c22a390b5eca36c5acb" target="_blank">https://github.com/NativeScript/ios-runtime/commit/1528ed50f85998147b190c22a390b5eca36c5acb</a></div></div></div></div></blockquote><div><br></div><div>Actually, LLInt ASM interpreter shows 15% performance win in Kraken benchmark[1].</div><div>Based on this fact, I've just enabled LLInt ASM interpreter when using `ENABLE_JIT=OFF` for x64 and ARM64 environments[2].</div><div><br></div><div>[1]: <a href="https://lists.webkit.org/pipermail/webkit-dev/2018-September/030157.html" target="_blank">https://lists.webkit.org/pipermail/webkit-dev/2018-September/030157.html</a></div><div>[2]: <a href="https://trac.webkit.org/r236381" target="_blank">https://trac.webkit.org/r236381</a><br></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><br></div><div><br></div><div>Koby<br></div></div></div></div><br><div class="gmail_quote"><div dir="ltr">On Sat, Sep 15, 2018 at 2:51 AM Yusuke Suzuki <<a href="mailto:yusukesuzuki@slowstart.org" target="_blank">yusukesuzuki@slowstart.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div>Really great!</div><div><div><br></div><div>node-jsc sounds very exciting to me. From the users' view, t is nice if we run app constructed in node.js manner in iOS devices.</div><div>In addition, from the JSC developers' view, it is also awesome. It 
allows us to easily run node.js libraries / benchmarks / tests on JSC, 
which is really great since,</div><div><br></div><div>1. We can run tests designed for node.js, it makes our JSC implementation more solid.</div><div>2.
 We can run benchmarks designed for node.js including JS libraries. JS 
libraries distributed in npm are more and more used in both node.js and 
browser world.</div><div>If we can have a way to run benchmarks in 
popular libraries on JSC easily, that offers great opportunities to 
optimize JSC on them.</div></div><div><br><div class="gmail_quote"><div dir="ltr">On Sat, Sep 15, 2018 at 5:20 AM Filip Pizlo <<a href="mailto:fpizlo@apple.com" target="_blank">fpizlo@apple.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div dir="auto"><div dir="ltr"><span></span></div><div dir="ltr">Wow!  That’s pretty cool!<div><br></div><div>I think that it would be great for this to be upstreamed. Can you create a bug on <a href="http://bugs.webkit.org" target="_blank">bugs.webkit.org</a> and post your patches for review?<br><br><div dir="ltr">-Filip</div><div dir="ltr"><br>On Sep 13, 2018, at 4:02 PM, Koby Boyango <<a href="mailto:koby.b@mce.systems" target="_blank">koby.b@mce.systems</a>> wrote:<br><br></div><blockquote type="cite"><div dir="ltr"><div dir="ltr"><div dir="ltr"><p class="gmail-m_7967123743842931495gmail-m_6084426053455191823m_1041104863187321813m_832108533644093192gmail-m_-6599973130007109915gmail-hpxQMr gmail-m_7967123743842931495gmail-m_6084426053455191823m_1041104863187321813m_832108533644093192gmail-m_-6599973130007109915gmail-yklcuq-10">Hi,</p><p class="gmail-m_7967123743842931495gmail-m_6084426053455191823m_1041104863187321813m_832108533644093192gmail-m_-6599973130007109915gmail-hpxQMr gmail-m_7967123743842931495gmail-m_6084426053455191823m_1041104863187321813m_832108533644093192gmail-m_-6599973130007109915gmail-yklcuq-10">I'm Koby Boyango, a senior researcher and developer at mce, and I've created <a class="gmail-m_7967123743842931495gmail-m_6084426053455191823m_1041104863187321813m_832108533644093192gmail-m_-6599973130007109915gmail-hMAgUJ gmail-m_7967123743842931495gmail-m_6084426053455191823m_1041104863187321813m_832108533644093192gmail-m_-6599973130007109915gmail-yklcuq-27" href="https://github.com/mceSystems/node-jsc" target="_blank">node-jsc</a>, an experimental port of node.js to the JavaScriptCore engine and iOS specifically.</p><p class="gmail-m_7967123743842931495gmail-m_6084426053455191823m_1041104863187321813m_832108533644093192gmail-m_-6599973130007109915gmail-hpxQMr gmail-m_7967123743842931495gmail-m_6084426053455191823m_1041104863187321813m_832108533644093192gmail-m_-6599973130007109915gmail-yklcuq-10">
node-jsc's core component, <a href="https://github.com/mceSystems/node-jsc/tree/master/deps/jscshim" target="_blank">"jscshim" (deps/jscshim)</a>, implements (parts of) v8 API on top of JavaScriptCore. 
It contains a stripped down version of WebKit's source code (mainly JSC and WTF).

To build WebKit, 
I'm using CMake to build the JSCOnly port, with JSC\WTF compiled as static libraries. For iOS I'm using my <a href="https://github.com/mceSystems/node-jsc/blob/master/deps/jscshim/tools/build_jsc.py" target="_blank">own build script</a> with a custom <a href="https://github.com/mceSystems/node-jsc/blob/master/deps/jscshim/tools/ios.toolchain.cmake" target="_blank">toolchain file</a>.







</p></div></div></div></blockquote></div></div></div></div></blockquote><div>I'm really happy to hear that your node-jsc is using JSCOnly ports :)<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div dir="auto"><div dir="ltr"><div><blockquote type="cite"><div dir="ltr"><div dir="ltr"><div dir="ltr"><p class="gmail-m_7967123743842931495gmail-m_6084426053455191823m_1041104863187321813m_832108533644093192gmail-m_-6599973130007109915gmail-hpxQMr gmail-m_7967123743842931495gmail-m_6084426053455191823m_1041104863187321813m_832108533644093192gmail-m_-6599973130007109915gmail-yklcuq-10">The project also includes <a class="gmail-m_7967123743842931495gmail-m_6084426053455191823m_1041104863187321813m_832108533644093192gmail-m_-6599973130007109915gmail-hMAgUJ gmail-m_7967123743842931495gmail-m_6084426053455191823m_1041104863187321813m_832108533644093192gmail-m_-6599973130007109915gmail-yklcuq-27" href="https://github.com/mceSystems/node-native-script" target="_blank">node-native-script</a>, NativeScript's iOS runtime refactored as node-jsc native module, allowing access to native iOS APIs directly from javascript.</p><p class="gmail-m_7967123743842931495gmail-m_6084426053455191823m_1041104863187321813m_832108533644093192gmail-m_-6599973130007109915gmail-hpxQMr gmail-m_7967123743842931495gmail-m_6084426053455191823m_1041104863187321813m_832108533644093192gmail-m_-6599973130007109915gmail-yklcuq-10">So first of all, I wanted to share this project with the WebKit developer community.<br>It's my first time working with WebKit, and node-jsc has been a great opportunity to experiment with it.<br></p><p class="gmail-m_7967123743842931495gmail-m_6084426053455191823m_1041104863187321813m_832108533644093192gmail-m_-6599973130007109915gmail-hpxQMr gmail-m_7967123743842931495gmail-m_6084426053455191823m_1041104863187321813m_832108533644093192gmail-m_-6599973130007109915gmail-yklcuq-10">Second, as I needed to make some minor changes\additions, I'm using <a href="https://github.com/mceSystems/webkit" target="_blank">my own fork</a>. I would love to discuss some of the changes I've made, and offer some patches if you'll find them useful. <br>
"<a href="https://github.com/mceSystems/node-jsc/blob/master/deps/jscshim/docs/webkit_fork_and_compilation.md" target="_blank">WebKit Fork and Compilation</a>" describes WebKit's usage in node-jsc and the major changes\additions I've made in my fork (<a href="https://github.com/mceSystems/node-jsc/blob/master/README.md" target="_blank">node-jsc's README</a> and <a href="https://github.com/mceSystems/node-jsc/blob/master/deps/jscshim/docs/jscshim.md" target="_blank">jschim's documentation</a> contains some more information).<br></p></div></div></div></blockquote></div></div></div></div></blockquote><div>Great, it is really nice if you have a patch for upstream :)</div><div>Looking through the documents, I have one question on LLInt v.s. CLoop.</div><div><br></div><div><a href="https://github.com/mceSystems/node-jsc/blob/master/deps/jscshim/docs/webkit_fork_and_compilation.md#webkit-port-and-compilation" target="_blank">https://github.com/mceSystems/node-jsc/blob/master/deps/jscshim/docs/webkit_fork_and_compilation.md#webkit-port-and-compilation</a><br></div><div>> Use the optimized assembly version of LLInt (JSC's interpreter), not cloop. This requires enabling JIT support, although we won't be using the JIT (but we can omit the FTL jit).</div><div><br></div><div>I would like to know how fast LLInt ASM interpreter is when comparing CLoop interpreter.</div><div>If it shows nice speedup, enabling LLInt ASM interpreter without JIT for major architectures (x64, ARM64) sounds nice.</div><div>As a bonus, if we offer this build configuration (using LLInt ASM interpreter without JIT), we can enable SamplingProfiler for this, which is disabled for CLoop builds.</div><div><br></div><div>Personally, I'm also interested in this thing. I'll set up the environment to measure it later too :)<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div dir="auto"><div dir="ltr"><div><blockquote type="cite"><div dir="ltr"><div dir="ltr"><div dir="ltr"><p class="gmail-m_7967123743842931495gmail-m_6084426053455191823m_1041104863187321813m_832108533644093192gmail-m_-6599973130007109915gmail-hpxQMr gmail-m_7967123743842931495gmail-m_6084426053455191823m_1041104863187321813m_832108533644093192gmail-m_-6599973130007109915gmail-yklcuq-10"></p><p class="gmail-m_7967123743842931495gmail-m_6084426053455191823m_1041104863187321813m_832108533644093192gmail-m_-6599973130007109915gmail-hpxQMr gmail-m_7967123743842931495gmail-m_6084426053455191823m_1041104863187321813m_832108533644093192gmail-m_-6599973130007109915gmail-yklcuq-10">Besides that, I will appreciate any opinions\ideas\insights\suggestions :) <br></p></div></div></div></blockquote></div></div></div></div></blockquote><br><div><br></div><div><br></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div dir="auto"><div dir="ltr"><div><blockquote type="cite"><div dir="ltr"><div dir="ltr"><div dir="ltr"><p class="gmail-m_7967123743842931495gmail-m_6084426053455191823m_1041104863187321813m_832108533644093192gmail-m_-6599973130007109915gmail-hpxQMr gmail-m_7967123743842931495gmail-m_6084426053455191823m_1041104863187321813m_832108533644093192gmail-m_-6599973130007109915gmail-yklcuq-10"></p><p class="gmail-m_7967123743842931495gmail-m_6084426053455191823m_1041104863187321813m_832108533644093192gmail-m_-6599973130007109915gmail-hpxQMr gmail-m_7967123743842931495gmail-m_6084426053455191823m_1041104863187321813m_832108533644093192gmail-m_-6599973130007109915gmail-yklcuq-10">Koby<br></p>

</div></div>
</div></blockquote><blockquote type="cite"><div dir="ltr"><span>_______________________________________________</span><br><span>webkit-dev mailing list</span><br><span><a href="mailto:webkit-dev@lists.webkit.org" target="_blank">webkit-dev@lists.webkit.org</a></span><br><span><a href="https://lists.webkit.org/mailman/listinfo/webkit-dev" target="_blank">https://lists.webkit.org/mailman/listinfo/webkit-dev</a></span><br></div></blockquote></div></div></div></div>_______________________________________________<br>
webkit-dev mailing list<br>
<a href="mailto:webkit-dev@lists.webkit.org" target="_blank">webkit-dev@lists.webkit.org</a><br>
<a href="https://lists.webkit.org/mailman/listinfo/webkit-dev" rel="noreferrer" target="_blank">https://lists.webkit.org/mailman/listinfo/webkit-dev</a><br>
</blockquote></div></div></div></div>
</blockquote></div>
</blockquote></div><br clear="all"><br>-- <br><div dir="ltr" class="gmail-m_7967123743842931495gmail_signature"><div dir="ltr"><div>Best regards,</div><div>Yusuke Suzuki<br></div></div></div></div></div></div>
</blockquote></div></div></div>