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.

Reply via email to