AFAIK, this is not allowed in asm.js.
Usually I understand asm.js as an almost truly assembly language.

regards,
- Lu


On Sun, Jul 27, 2014 at 4:44 PM, Sören Balko <[email protected]> wrote:

> Thanks for clarifying this for me - can’t wait to try it out. That’s
> definitely one of the most exciting new features in Emscripten!
>
> In terms of saving and restoring local variables quickly: to avoid
> iterating over all variables, can you make them properties of an object at
> compile time (instead of atomic variables in the function scope)?  I other
> words, make the function scope explicitly accessible as an object? For
> example, for two the functions below:
>
> void foo(int a) {
> float b;
> char * c;
> …
>  bar(b);
> ...
> }
>
> void bar(float c) {
> int d;
>  …
> emscripten_sleep(1);
> …
> }
>
> You could generate two explicit scope objects:
>
> fooScope = {
> parentScope: ...
> a: ...
> b: …
>  c: …
> }
>
> and
>
> barScope = {
> parentScope: …
> c: …
>  d: ...
> }
>
> When saving the local variables when calling emscripten_sleep, you merely
> had to store barScope. If bar was called from foo, its parentScope property
> was set to fooScope (this had to happen at runtime at a small cost).
> Restoring the scope is again, a single operation only. In return, the
> affected functions would need to access their variables as properties of
> the funcScope object. Not sure if asm.js allows for that. You would
> probably have to represent the scope structures on the heap and turn
> accesses to the local variables into heap accesses at some offset of the
> scope struct location. Also, the funcScope.parentScope property had to be
> populated when entering a function. So there was a trade-off, not sure how
> it would pan out.
>
> Soeren
>
>
> On 27 Jul 2014, at 22:29, 王璐 <[email protected]> wrote:
>
> Hi,
>
> There are definitely overhead for this transformation, mainly saving and
> restoring local variables. Usually this kind of overhead is acceptable, as
> async functions are usually supposed to be slow.
>
> On the other hand, how would you define 'performance degration', as
> probably we don't have other options.
>
> asm.js does support function pointers, although you need to know the
> signature, and asyncify is asm.js compliant. In fact asm.js is required for
> this feature.
>
>
> regards,
> - Lu
>
> --
> You received this message because you are subscribed to a topic in the
> Google Groups "emscripten-discuss" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/emscripten-discuss/kSMH2N0CoLg/unsubscribe
> .
> To unsubscribe from this group and all its topics, 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 a topic in the
> Google Groups "emscripten-discuss" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/emscripten-discuss/kSMH2N0CoLg/unsubscribe
> .
> To unsubscribe from this group and all its topics, 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.

Reply via email to