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.
