You may be interested in this: https://github.com/tc39/proposal-error-stacks
On Sun, Jan 13, 2019 at 22:02 Ranando King <[email protected]> wrote:
> ES used to have Function.caller for traversing the call stack, but
> apparently this was very problematic for engine development and prevented
> various optimizations. So now it doesn't work in strict mode which makes it
> useless for code involving `"use strict"` or `class`. One of the main use
> cases for such functionality was being able to determine where a given
> function was called from.
>
> I was thinking of a global static class that is able to uniquely identify
> each execution context on the call stack without giving any access to the
> context objects themselves. I was thinking of maybe something like this:
>
> ```js
> class CallStackEntry {
> #className; //Name of the class or null
> #functionName; //Name of the function or null
> #fileName; //Name of the source file or null
> #line; //Source line number
> #offset; //Source character offset on the line
> #id; //Symbol
> get fileName() { return this.#filename; }
> get line() { return this.#line; }
> get offset() { return this.#offset; }
> get id() { return this.#id; }
> constructor(_fileName, _line_, _offset, _id) {
> this.#fileName = _fileName;
> this.#line = _line;
> this.#offset = _offset;
> this.#id = _id;
> }
> }
>
> class CallStack {
> static #callStack = []; //Internally managed
> static get stackLimit() {...}
> static set stackLimit(v) {...}
> static get stack() {
> //return the call stack as an array of CallStackEntry objects
> }
> }
> ```
>
> With something like this, security-type software would be able to clearly
> identify functions without granting any access rights to the corresponding
> function.
>
>
> _______________________________________________
> es-discuss mailing list
> [email protected]
> https://mail.mozilla.org/listinfo/es-discuss
>
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss