Hi Caiiycuk Given that you are still reproing your bug on the RollABall project, can you tell me what your development configuration is (what OS are you using, what version of nodejs are you using, etc.)? I just double checked that I could successfully reduce build.asm.js from your zip file on Google Drive using the latest run_sfe.js. Can you double check that you have commit ID 8e62700a102fe12a6b1ff73934e21ae127e7f6ac in your git log?
Regarding the errors that you are seeing with non-valid asm.js, just to confirm, this is on Cocos2d, correct? I did check that we were generating valid asm.js, but I didn't try running the game (I had some missing pngs and saw a runtime exception being thrown - but it was the same before and after running SFE). I'll make sure I can run it after running SFE. Also, I think if you see more issues, it may be better to track them using the GitHub issue tracker for SFE: https://github.com/achoudhury85/Similar-Function-Elimination/issues. Regards, Arnab On Tuesday, August 22, 2017 at 11:43:09 PM UTC-7, caiiiycuk wrote: > > TypeError: asm.js type error: double is not a subtype of intish > > 2017-08-23 13:42 GMT+07:00 Александр Гурьянов <[email protected] > <javascript:>>: > > Sorry, missed error line from prev message: > > TypeError: asm.js type error: double is not a subtype of intish > > > > 2017-08-23 13:42 GMT+07:00 Александр Гурьянов <[email protected] > <javascript:>>: > >> Without -g2 I have this error: > >> g[a+4>>2]=-$|0; > >> > >> In function: > >> function Bg(a,b,$){a=a|0;b=b|0;$=+$;g[a>>2]=0.0;g[a+4>>2]=-$|0;return} > >> > >> And SFE on roll-a-ball project still does not work with same error. I > >> start believe that I doing something wrong in build steps... > >> > >> P.S. My projects have a lot of undefined symbols (but they does not > >> used), can this be a problem? > >> > >> > >> > >> 2017-08-23 13:34 GMT+07:00 Александр Гурьянов <[email protected] > <javascript:>>: > >>> Hi. After your commit -g2 error gone. But my project does not work. I > >>> see black screen (no errors, just black screen). And this error: > >>> > >>> TypeError: asm.js type error: void incompatible with previous return > of type f64 > >>> > >>> If I remove -g2 game works (but asm.js not). Btw, I trying to find how > >>> to reporduce. > >>> > >>> The code for "asm.js type error: void incompatible with previous > >>> return of type f64" is: > >>> > >>> function _roundf(d1){d1=+d1;(Jl(d1))} > >>> > >>> grep for _roundf in js: > >>>>2]|0)+284>>2]|0;d37=+_roundf(+d28);d42=+_roundf(+ > >>>>2]|0)+284>>2]|0;d28=+_roundf(+d44);d42=+_roundf(+ > >>>>2]|0)+284>>2]|0;d50=+_roundf(+d37);FUNCTION_TABLE > >>>>2]|0)+284>>2]|0;d50=+_roundf(+(d37+d28));FUNCTION > >>> 1=HEAP32[i8>>2]|0;d2=+_roundf(+ +HEAPF32[i1+20>>2] > >>> HEAP32[i10>>2]|0;d13=+_roundf(+(d2*+HEAPF32[i1+20> > >>> AP32[i1+8>>2]|0;i9=~~+_roundf(+(+(i7|0)*1.5/+HEAPF > >>>>2]|0;HEAPF32[i6>>2]=+_roundf(+d7);HEAPF32[i8>>2]= > >>> =i1|0;var i2=0;i2=~~-+_roundf(+(+HEAPF64[i1+224>>3 > >>> DO(i1,24)|0}function _roundf(d1){d1=+d1;(Jl(d1))} > >>> serialization_pb_cpp, _roundf: _roundf, __GLOBAL__ > >>> > >>> 2017-08-23 5:00 GMT+07:00 arnab choudhury <[email protected] > <javascript:>>: > >>>> Hello caiiycuk - the latest commit 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] <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] > <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] > <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] > <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] > <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.
