David Bruant (2013-06-14T19:54:00.000Z)
Le 14/06/2013 16:56, Bruno Jouhier a écrit :
> I'm using ES6 generators to implement a little async/await library and 
> I'm quite pleased with the result so far but I'm lacking one API: a 
> function to get stack information from a generator object. Ideally it 
> would return the name of the current generator function, the filename 
> and the line number where it last yielded.
>
> If I had this API I 'd be able to provide a complete trace of the 
> stack of await calls when an exception is caught.
ES5 strict mode poisoned .caller and .callee. The reason is that it 
isn't necessarily a good idea (security, maybe performance reasons as 
well) to give authority to the runtime to inspect stack frames. It's 
more of a debugger use case.

The Debugger API in Firefox (only available to "Chrome-level" privileged 
code) has a way to know the function being called, and to navigate 
across the different frames like the caller frame ("older" property) [1] 
and some infos that help finding the function name, filename and line 
number.

David

[1] 
https://developer.mozilla.org/en-US/docs/SpiderMonkey/JS_Debugger_API_Reference/Debugger.Frame
github at esdiscuss.org (2013-07-12T02:27:36.819Z)
Le 14/06/2013 16:56, Bruno Jouhier a ?crit :
> I'm using ES6 generators to implement a little async/await library and 
> I'm quite pleased with the result so far but I'm lacking one API: a 
> function to get stack information from a generator object. Ideally it 
> would return the name of the current generator function, the filename 
> and the line number where it last yielded.
>
> If I had this API I 'd be able to provide a complete trace of the 
> stack of await calls when an exception is caught.

ES5 strict mode poisoned .caller and .callee. The reason is that it 
isn't necessarily a good idea (security, maybe performance reasons as 
well) to give authority to the runtime to inspect stack frames. It's 
more of a debugger use case.

The Debugger API in Firefox (only available to "Chrome-level" privileged 
code) has a way to know the function being called, and to navigate 
across the different frames like the caller frame ("older" property) [1] 
and some infos that help finding the function name, filename and line 
number.

[1]: https://developer.mozilla.org/en-US/docs/SpiderMonkey/JS_Debugger_API_Reference/Debugger.Frame