You may be interested in this: https://github.com/tc39/proposal-error-stacks
On Sun, Jan 13, 2019 at 22:02 Ranando King <king...@gmail.com> 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
> es-discuss@mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to