What is the... scope(?) of the EM_ASM code? vs say, pre-js or post-js context?
Like... what is the structure of what it can see for variables? I've put a local object 'this_' on Module so I can definatly access that accross various EM_ASM emissions, but if I understood more about the context/closure stack, maybe I could do something more efficient? On Mon, Jun 24, 2019 at 11:09 AM 'Jacob Gravelle' via emscripten-discuss < [email protected]> wrote: > EM_ASM is morally a JS lambda embedded in C++ code. The way that this > works in the toolchain is Deep Magic, one of the consequences of which is > needing to store the data of what JS to generate, in a way that survives > the LLVM optimizer, and doesn't otherwise interact with the surrounding > code. This winds up being generated as a a data section with the string > data. It's effectively dead memory, but we can't strip it because we can't > know that statically. > > On Mon, Jun 3, 2019 at 11:47 AM Rick Battagline <[email protected]> > wrote: > >> I've been compiling with Emscripten, then disassembling with wasm2wat to >> try and figure out what is happening in the WebAssembly vs. the JavaScript >> glue code. I'm trying to figure out what is going on with EM_ASM. I >> compiled the following code: >> >> #include <emscripten.h> >> >> EMSCRIPTEN_KEEPALIVE >> void hello() { >> EM_ASM({ >> console.log("hello world!"); >> }); >> } >> >> If there is a typo I apologize, I was working on a different computer and >> can't copy and paste. Anyway, I see the console.log call in both the >> JavaScript glue code and the disassembled WAT. >> >> Here is what I see in the JavaScript: >> >> var ASM_CONSTS = [function() {console.log("hello world!"); }]; >> >> Based on this, I was expecting that function to be passed in through the >> imports in the WAT, which maybe it is. But inside the WAT I see this: >> >> (data (; 0 ;) (i32.const 1024) "{ console.log(\22hello world!\22); }")) >> >> That line in the WAT made me think that perhaps the code is being passed >> from the WebAssembly into a function that uses a JavaScript eval, although >> I see no evidence of an eval in the JavaScript code. >> >> Would anyone be willing to help me understand what Emscripten is doing >> here? >> >> Thanks, >> Rick >> >> -- >> You received this message because you are subscribed to the Google Groups >> "emscripten-discuss" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/emscripten-discuss/aaa156de-8ee5-4539-8f74-c00f005e5aed%40googlegroups.com >> <https://groups.google.com/d/msgid/emscripten-discuss/aaa156de-8ee5-4539-8f74-c00f005e5aed%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> For more options, visit https://groups.google.com/d/optout. >> > -- > You received this message because you are subscribed to the Google Groups > "emscripten-discuss" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/emscripten-discuss/CABzi3J6mHQA-CHgQfjFkfR%3D6zwoyfGj5T7Ou2tR7LMyDzv1B7A%40mail.gmail.com > <https://groups.google.com/d/msgid/emscripten-discuss/CABzi3J6mHQA-CHgQfjFkfR%3D6zwoyfGj5T7Ou2tR7LMyDzv1B7A%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "emscripten-discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/emscripten-discuss/CAA2GJqX-u4wrb-4MJ8_3Gfz9QX13SBnu_-wzwQ_zQ2TazCa%2BQQ%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
