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
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