i'm not targeting on debug fast; i purely want to split the large js file. at first I try to use dynamic linking, but I found Urho3D (i'm using it) use -s MAIN_MODULE=1 for some reason ( https://groups.google.com/forum/#!topic/emscripten-discuss/DSn54oTwZqc ) when dynamic linking, Urho's output JS is times larger compared to static linking, which is not acceptable.
the JS size when static linking is a little more than expected. (I'm trying to port Urho on WeChat 'mini-games', which have quite a lot users especially in China. but the 'mini-games' have the JS file limit of 4M.) the method arnab mentioned seem like a possible way to solve the problem. On Tuesday, January 5, 2016 at 7:13:51 AM UTC+8, Alon Zakai wrote: > > I see. So this is no longer valid asm.js, but still useful for debugging, > it sounds? > > Curious to hear what other people think about this. On the one hand, it's > a complex operation and might be brittle/take work to maintain. And browser > vendors are making progress on debug perf. But, maybe people are so harmed > by this, that we should make the effort. > > On Mon, Jan 4, 2016 at 11:32 AM, arnab choudhury <[email protected] > <javascript:>> wrote: > >> All variables that are local to the ASM JS scope become contained within >> the asmJSPrivateState dictionary variable. So, for the STACKTOP variable >> (and all other ASM JS global variables), we modify the AST so that all >> references to it are replaced with asmJSPrivateState.STACKTOP - that does >> the trick. The main HTML file includes all the chunked JS files and each >> one can modify asmJSPrivateState.STACKTOP as appropriate - and the other >> chunks will see the effects of that change. >> >> Hope this helps - although I had written this tool as a standalone >> outside of the emscripten codebase, I can create a pull request with it >> integrated into the emscripten codebase if there's enough interest. >> >> On Monday, January 4, 2016 at 11:00:00 AM UTC-8, Alon Zakai wrote: >>> >>> Interesting! >>> >>> What happens in practice with e.g. the STACKTOP global variable which is >>> in the asm.js scope? How is it shared and updated between separate >>> functions? >>> >>> On Mon, Dec 28, 2015 at 12:48 PM, arnab choudhury <[email protected]> >>> wrote: >>> >>>> FYI - In order to work around the problem, I went ahead and wrote a >>>> python script that mimic'ed Emscripten's JS optimizer python file to split >>>> up the large ASM JS file (using uglify JS) into a number of smaller JS >>>> files - all configured via a set size (I used 512K). The script would also >>>> modify the Emscripten generated HTML to include all the smaller JS files >>>> instead of the one large file. Its come in super handy to debug large JS >>>> files. If there's enough interest to port back to Emscripten, I can make >>>> this code available. If this sounds interesting, please read the attached >>>> doc that talks about it in greater detail (unfortunately, its too long to >>>> paste into this thread). >>>> >>>> On Monday, December 14, 2015 at 8:55:50 AM UTC-8, jj wrote: >>>>> >>>>> We have two items in the Firefox issue tracker regarding debugging >>>>> large files: >>>>> >>>>> https://bugzilla.mozilla.org/show_bug.cgi?id=1158098 - Improve >>>>> debugger to navigate and search large UE4 StrategyGame JavaScript file. >>>>> https://bugzilla.mozilla.org/show_bug.cgi?id=1224726 - High memory >>>>> consumption when opening and searching a large Javascript file in >>>>> debugger. >>>>> >>>>> These are in the radar for 2016, so we are hoping to improve things >>>>> greatly here. >>>>> >>>>> 2015-12-04 23:16 GMT+02:00 Alon Zakai <[email protected]>: >>>>> >>>>>> Yes, this is a known issue. There is progress on the browser side to >>>>>> more efficiently handle such large programs, but no browser does this >>>>>> well >>>>>> yet. >>>>>> >>>>>> Emscripten supports dynamic linking, >>>>>> >>>>>> https://github.com/kripken/emscripten/wiki/Linking >>>>>> >>>>>> This can be a solution for this problem, by splitting things up into >>>>>> smaller files. >>>>>> >>>>>> In practice, personally, I tend to use print debugging and I open the >>>>>> file in a text editor on the side that can handle massive text files. >>>>>> >>>>>> On Fri, Dec 4, 2015 at 12:02 PM, arnab choudhury <[email protected]> >>>>>> wrote: >>>>>> >>>>>>> Hey all >>>>>>> >>>>>>> I'm using Emscripten to convert a decent sized C++ codebase to >>>>>>> Javascript. As part of this process, I'm finding that debugging the >>>>>>> unoptimized generated JS can be quite painful. Specifically, some JS >>>>>>> files >>>>>>> can be up to 1 million lines long and this completely breaks my >>>>>>> browser's >>>>>>> node debugger (via node-inspector). Google's v8 debugger (via node >>>>>>> debug) >>>>>>> also has a hard time stepping through code. My only debugging technique >>>>>>> that works currently is to enter print statements, and debug and build >>>>>>> iteratively. >>>>>>> >>>>>>> I saw some threads on github about emscripten having the ability to >>>>>>> split up the generated JS files into multiple files. However, the >>>>>>> latest >>>>>>> version of emscripten doesn't seem to support this. Have others run >>>>>>> into >>>>>>> this issue? Are there any existing solutions for this problem? >>>>>>> >>>>>>> Thanks, >>>>>>> Arnab >>>>>>> >>>>>>> -- >>>>>>> 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]. >>>>>>> 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]. >>>>>> 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]. >>>> 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] <javascript:>. >> 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]. For more options, visit https://groups.google.com/d/optout.
