True! We do want to use fastcomp but wasn't sure the advantages outweighed the embind porting work.
However, because Dean asked, I sat down and took a look tonight, and got a few functions working. Most of the work is in getting rid of the function pointer casts, but it seems quite straightforward. I'll poke away and send pull requests when I have them... If anyone wants to help, let me know. :) On Tue, Mar 4, 2014 at 8:27 PM, Alon Zakai <[email protected]> wrote: > Note that fastcomp supports a growable heap in asm.js mode. It will not > validate as asm.js, but should still get much of the speedups from it, just > without guarantees and probably not all of them. > > - Alon > > > > On Tue, Mar 4, 2014 at 2:46 PM, Chad Austin <[email protected]> wrote: > >> Hi Dean, >> >> We should port embind to asm.js! It's certainly a bit of work, but >> probably not too hard. It's really just that nobody's done the work yet. >> Since IMVU, my employer, can't use asm.js until it supports a growable heap >> (and perhaps closure compiler), we aren't terribly motivated to do the work. >> >> That said, part of me just wants to bite the bullet and do the conversion >> myself if I can find the time. :) >> >> In case someone else wants to take a crack at it, here is what I know: >> >> There are a couple places where embind uses reinterpret_cast on function >> pointers in order to pass more arguments than their prototypes specify. >> For example, see >> https://github.com/kripken/emscripten/blob/master/system/include/emscripten/val.h#L67 >> >> Those functions need to be converted to varargs. (At the time, I think >> we were blocked on a varargs issue with the old LLVM, but that may not be >> an issue anymore.) >> >> The other issue is that embind relies on JavaScript being able to look up >> functions by indexing into FUNCTION_TABLE[x]. asm.js doesn't have a single >> function table: it has a whole bunch of function tables, one for each >> possible type signature. >> >> Thus, on the C++ side, we need a way to take a C++ signature (like >> float(const void*, int&)) and turn that into a string ("fii") that we can >> use to select one of the function tables on the embind side. Embind would >> also need the compiler to output a table from signature to the appropriate >> function table. The compiler-generated glue would look something like: >> >> var FUNCTION_TABLES = { >> vi: FUNCTION_TABLE_vv, >> fii: FUNCTION_TABLE_fii, >> ... >> }; >> >> I *think* that if we had those two things, we could make embind work >> with asm.js. >> >> *waves hands a bit* :) >> >> Hope that's helpful, >> Chad >> >> On Tue, Mar 4, 2014 at 2:28 PM, Dean Elhard <[email protected]> wrote: >> >>> Since 1.13.0 is moving to the fastcomp compiler, which only supports >>> asm.js, and embind doesn't work with asm.js, it seems that anyone relying >>> on embind is being left behind. >>> >>> The issues I see on github regarding embind and asm.js are old and >>> inactive, and indicate no plans to make embind work with asm.js any time >>> soon. >>> >>> Any comment on the future of embind (if any), or what will replace it? >>> >>> >>> -- >>> 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/groups/opt_out. >>> >> >> >> >> -- >> Chad Austin >> Technical Director, IMVU >> http://engineering.imvu.com <http://www.imvu.com/members/Chad/> >> http://chadaustin.me >> >> >> -- >> 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/groups/opt_out. >> > > -- > 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/groups/opt_out. > -- Chad Austin Technical Director, IMVU http://engineering.imvu.com <http://www.imvu.com/members/Chad/> http://chadaustin.me -- 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/groups/opt_out.
