Hello caiiycuk - the latest commit <https://github.com/achoudhury85/Similar-Function-Elimination/commit/3e94df8993d17ce9a579d14b83a63fdfcbf00207> to the master branch fixes this issue. Please let me know if you see any issues. Thanks for the due diligence!
Regards, Arnab On Tuesday, August 22, 2017 at 12:36:23 PM UTC-7, arnab choudhury wrote: > > Thanks for catching this caiiycuk - I can repro and will have a fix out > shortly. Looks like a name-clash bug in the minified name generator SFE > uses. > > On Tuesday, August 22, 2017 at 10:17:15 AM UTC-7, caiiiycuk wrote: >> >> While trying to reproduce asm.js error, I found another problem. SFE >> wan't work with -g2 flag, you can reporduce this problem with latest >> emscripten: >> >> ./emcc -O2 -g2 -s USE_COCOS2D=3 -s ASM_JS=1 --std=c++11 >> ./tests/cocos2d_hello.cpp --preload-file >> ~/.emscripten_ports/Cocos2d/Cocos2d-version_3_2/samples/Cpp/HelloCpp/Resources@ >> >> >> -o cocos.html >> >> node --max-old-space-size=8192 run_sfe.js --file cocos.js | sponge >> cocos.js >> >> >> firefox cocos.html >> >> error: >> cocos.html:1249 exception thrown: TypeError: $[(A & 3)] is not a >> function,TypeError: $[(A & 3)] is not a function >> at BY >> (file:///home/caiiiycuk/emscripten/sdk/emscripten/cocos2d/cocos.js:10311:2320580) >> >> >> at __ZNSt3__26locale8__globalEv >> (file:///home/caiiiycuk/emscripten/sdk/emscripten/cocos2d/cocos.js:10311:2159273) >> >> >> at __ZNSt3__26localeC2Ev >> (file:///home/caiiiycuk/emscripten/sdk/emscripten/cocos2d/cocos.js:10311:2160617) >> >> >> at __ZNSt3__28ios_base4initEPv >> (file:///home/caiiiycuk/emscripten/sdk/emscripten/cocos2d/cocos.js:10311:2048889) >> >> >> at __ZN7cocos2d8BitmapDC12divideStringEP9_TTF_FontPKcii >> (file:///home/caiiiycuk/emscripten/sdk/emscripten/cocos2d/cocos.js:10311:350499) >> >> >> at __ZN7cocos2d8BitmapDC9getBitmapEPKciiNS_5Image9TextAlignES2_f >> (file:///home/caiiiycuk/emscripten/sdk/emscripten/cocos2d/cocos.js:10311:748315) >> >> >> at __ZN7cocos2d5Image14initWithStringEPKciiNS0_9TextAlignES2_i >> (file:///home/caiiiycuk/emscripten/sdk/emscripten/cocos2d/cocos.js:10311:1308234) >> >> >> at __ZN7cocos2d9Texture2D14initWithStringEPKcRKNS_14FontDefinitionE >> (file:///home/caiiiycuk/emscripten/sdk/emscripten/cocos2d/cocos.js:10311:1778238) >> >> >> at >> __ZN7cocos2d9Texture2D14initWithStringEPKcS2_fRKNS_4SizeENS_14TextHAlignmentENS_14TextVAlignmentE >> >> >> (file:///home/caiiiycuk/emscripten/sdk/emscripten/cocos2d/cocos.js:10311:1354460) >> >> >> at __ZN7cocos2d8LabelTTF13updateTextureEv >> (file:///home/caiiiycuk/emscripten/sdk/emscripten/cocos2d/cocos.js:10311:1666246) >> >> >> >> >> Error only occurs in chrome, or is you disable asm.js mode (for >> example by debugger) >> >> 2017-08-22 23:42 GMT+07:00 arnab choudhury <[email protected]>: >> > 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 <[email protected]>: >> >> > 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 Александр Гурьянов <[email protected]>: >> >> >> > Roll a ball project: >> >> >> > https://www.assetstore.unity3d.com/en/#!/content/77198 >> >> >> > >> >> >> > 2017-08-22 11:32 GMT+07:00 Александр Гурьянов <[email protected]>: >> >> >> >> >> 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 Александр Гурьянов <[email protected]>: >> >> >> >> >>> 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 <[email protected]>: >> >> >> >> >>>> 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 >> >> >> >>>>> <[email protected]> >> >> >> >>>>> 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 [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]. >> > 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.
