So - replacing 'Module["asm"] =' with 'var asm =' in build.asm.js followed 
by an attempt to run SFE succeeds. I see the following reduction (around 
8%).

08/22/2017  09:15 AM        19,782,571 build.asm.js
08/22/2017  09:39 AM        18,225,058 build.asm.reduced.js

I think the core problem right now is that we currently don't support 
running SFE on Emscripten generated JS that was built with the 
--separate-asm flag. I'll look into fixing this today.

Thanks,
Arnab

On Tuesday, August 22, 2017 at 9:25:32 AM UTC-7, caiiiycuk wrote:
>
> Great. I will try to reproduce asm.js bug. Btw, if you build 
> roll-a-ball project in Unity, then output will be in Unity format 
> (also js, but with Unity loader, Unity staff). You can find emscripten 
> output in Project/Library/webgl_cache/linkresult_asm/ folder. 
>
> 2017-08-22 23:15 GMT+07:00 arnab choudhury <achou...@gmail.com 
> <javascript:>>: 
> > Hi caiiycuk 
> > 
> > I'll have an update here shortly. I would love to be able to reproduce 
> the 
> > non-asm.js bug since we have extensive tests for this at Tableau. I'm 
> trying 
> > out the roll-a-ball project right now, will get back shortly. 
> > 
> > Regards, 
> > Arnab 
> > 
> > On Tuesday, August 22, 2017 at 3:07:44 AM UTC-7, caiiiycuk wrote: 
> >> 
> >> As I see using SFE breaks asm.js validity? On my another project sfe 
> >> produce js less on 500Kb (from 6.5Mb), but FF says: 
> >> TypeError: asm.js type error: double is not a subtype of intish 
> >> 
> >> 2017-08-22 11:33 GMT+07:00 Александр Гурьянов <caii...@gmail.com>: 
> >> > Roll a ball project: 
> >> > https://www.assetstore.unity3d.com/en/#!/content/77198 
> >> > 
> >> > 2017-08-22 11:32 GMT+07:00 Александр Гурьянов <caii...@gmail.com>: 
> >> >> Hi. I tried to use SFE on Roll-a-ball demo project, and get same 
> >> >> results. Unity uses --separate-asm flag to build asm.js. Resulting 
> js 
> >> >> looks like: 
> >> >> 
> >> >> Module["asm"] = (function(global,env,buffer) { 
> >> >> "use asm";var a=new global.Int8Array(buffer);var b=new 
> >> >> global.Int16Array(buffer);... 
> >> >> 
> >> >> I tried to remove wrapping function (Module["asm"] = 
> >> >> (function(global,env,buffer) { ... }), and code looks like: 
> >> >> "use asm";var a=new global.Int8Array(buffer);var b=new 
> >> >> global.Int16Array(buffer);... 
> >> >> 
> >> >> When I run SFE I have another error: 
> >> >> 
> >> >> 
> /home/caiiiycuk/sdk/Similar-Function-Elimination/node_modules/esprima/esprima.js:5701
>  
>
> >> >>             throw e; 
> >> >>             ^ 
> >> >> Error: Line 25: Illegal return statement 
> >> >>     at constructError 
> >> >> 
> >> >> 
> (/home/caiiiycuk/sdk/Similar-Function-Elimination/node_modules/esprima/esprima.js:2406:21)
>  
>
> >> >>     at createError 
> >> >> 
> >> >> 
> (/home/caiiiycuk/sdk/Similar-Function-Elimination/node_modules/esprima/esprima.js:2425:17)
>  
>
> >> >>     at tolerateError 
> >> >> 
> >> >> 
> (/home/caiiiycuk/sdk/Similar-Function-Elimination/node_modules/esprima/esprima.js:2460:17)
>  
>
> >> >>     at parseReturnStatement 
> >> >> 
> >> >> 
> (/home/caiiiycuk/sdk/Similar-Function-Elimination/node_modules/esprima/esprima.js:4533:13)
>  
>
> >> >>     at parseStatement 
> >> >> 
> >> >> 
> (/home/caiiiycuk/sdk/Similar-Function-Elimination/node_modules/esprima/esprima.js:4780:24)
>  
>
> >> >>     at parseStatementListItem 
> >> >> 
> >> >> 
> (/home/caiiiycuk/sdk/Similar-Function-Elimination/node_modules/esprima/esprima.js:3988:16)
>  
>
> >> >>     at parseScriptBody 
> >> >> 
> >> >> 
> (/home/caiiiycuk/sdk/Similar-Function-Elimination/node_modules/esprima/esprima.js:5489:25)
>  
>
> >> >>     at parseProgram 
> >> >> 
> >> >> 
> (/home/caiiiycuk/sdk/Similar-Function-Elimination/node_modules/esprima/esprima.js:5505:16)
>  
>
> >> >>     at Object.parse 
> >> >> 
> >> >> 
> (/home/caiiiycuk/sdk/Similar-Function-Elimination/node_modules/esprima/esprima.js:5689:23)
>  
>
> >> >>     at SimilarFunctionEliminator.srcToAst 
> >> >> 
> >> >> 
> (/home/caiiiycuk/sdk/Similar-Function-Elimination/src/similar_function_eliminator.js:35:20)
>  
>
> >> >> 
> >> >> 
> >> >> Maybe I doing something wrong. Can you try? Resulting js is here 
> >> >> (build.asm.js): 
> >> >> 
> >> >> 
> >> >> 
> https://drive.google.com/file/d/0B28AXjYMDNZscDFlZTdWMGMzQkU/view?usp=sharing 
> >> >> 
> >> >> Thank you! 
> >> >> 
> >> >> 2017-08-22 1:35 GMT+07:00 Александр Гурьянов <caii...@gmail.com>: 
> >> >>> I think that error can be reporudced on any Unity project, I will 
> >> >>> check and back) Btw, thanks for nice stuff! 
> >> >>> 
> >> >>> 2017-08-22 1:27 GMT+07:00 arnab choudhury <achou...@gmail.com>: 
> >> >>>> Thanks Alon :). 
> >> >>>> 
> >> >>>> Caiiycuk, is the codebase you are trying to run SFE on available 
> >> >>>> publicly? 
> >> >>>> Can you post the github link here if so? If not, take a look at 
> the 
> >> >>>> generated JS on which you are going to run SFE on. Make sure that 
> >> >>>> there is a 
> >> >>>> top level global variable called asm. If the asm.js is wrapped, 
> then 
> >> >>>> you 
> >> >>>> might have to save off the asm.js (the part of the code that 
> contains 
> >> >>>> a top 
> >> >>>> level variable called asm) to a separate file and try running SFE 
> on 
> >> >>>> that to 
> >> >>>> see the potential size reduction. 
> >> >>>> 
> >> >>>> Regards, 
> >> >>>> Arnab 
> >> >>>> 
> >> >>>> On Monday, August 21, 2017 at 10:47:22 AM UTC-7, Alon Zakai wrote: 
> >> >>>>> 
> >> >>>>> Very interesting stuff here! :) 
> >> >>>>> 
> >> >>>>> I opened this issue for implementation in Binaryen: 
> >> >>>>> https://github.com/WebAssembly/binaryen/issues/1142 
> >> >>>>> 
> >> >>>>> On Fri, Aug 18, 2017 at 8:24 AM, arnab choudhury 
> >> >>>>> <achou...@gmail.com> 
> >> >>>>> wrote: 
> >> >>>>>> 
> >> >>>>>> Hello Emscripten-Discuss 
> >> >>>>>> 
> >> >>>>>> I just wanted to bring folks' attention to a new post-build 
> >> >>>>>> optimization 
> >> >>>>>> pass for Emscripten generated asm.js called Similar Function 
> >> >>>>>> Elimination 
> >> >>>>>> (SFE) that Tableau recently open sourced. I discussed with Alon, 
> >> >>>>>> and our 
> >> >>>>>> thinking is that we will be adding this pass to Binaryen's web 
> >> >>>>>> assembly 
> >> >>>>>> generator. Given that everyone is moving to Web Assembly, we are 
> >> >>>>>> thinking we 
> >> >>>>>> may not add this pass back to Emscripten. However, that being 
> said, 
> >> >>>>>> the 
> >> >>>>>> Emscripten community should feel free to use Similar Function 
> >> >>>>>> Elimination on 
> >> >>>>>> Emscripten generated asm.js if you need the additional size 
> >> >>>>>> reduction. 
> >> >>>>>> 
> >> >>>>>> https://github.com/achoudhury85/Similar-Function-Elimination 
> >> >>>>>> 
> >> >>>>>> At Tableau, we have observed up to 20% code size reduction when 
> >> >>>>>> using SFE 
> >> >>>>>> on template heavy codebases. 
> >> >>>>>> 
> >> >>>>>> Regards, 
> >> >>>>>> 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 emscripten-discuss+unsubscr...@googlegroups.com 
> <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 emscripten-discuss+unsubscr...@googlegroups.com 
> <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 emscripten-discuss+unsubscr...@googlegroups.com <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 emscripten-discuss+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to