Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Layering: take care of edge cases for GetActiveScriptOrModule() #556

Merged
merged 1 commit into from
May 6, 2016

Conversation

domenic
Copy link
Member

@domenic domenic commented May 4, 2016

Instead of only looking at Function components, and falling back to the running execution context, simply go for the topmost execution context with a ScriptOrModule component.

The "no such context exists" case can in fact be reached, if GetActiveScriptOrModule() is called with a stack that only contains the "realm execution context" (i.e. if this is called without being initiated by ScriptEvaluation or ModuleEvaluation).

Instead of only looking at Function components, and falling back to the running execution context, simply go for the topmost execution context with a ScriptOrModule component.

The "no such context exists" case can in fact be reached, if GetActiveScriptOrModule() is called with a stack that only contains the "realm execution context" (i.e. if this is called without being initiated by ScriptEvaluation or ModuleEvaluation).
domenic added a commit to whatwg/html that referenced this pull request May 4, 2016
As discussed in #473, starting especially from around
#473 (comment), the
definition of incumbent introduced in #401 falls down in certain
important cases. In order to fix this, we introduce the "backup
incumbent settings object stack", which takes care of these trickier
cases. This commit also adds a few examples of how exactly incumbent
settings object calculation works, especially in the case where the
backup incumbent settings object stack ends up mattering.

For this story to be fully coherent, we will also need the minor fixes
found in tc39/ecma262#556, as well as further revisions to Web IDL to
update it for this new framework. This commit is the first step,
however.
@bterlson bterlson merged commit 13a4617 into tc39:master May 6, 2016
domenic added a commit to whatwg/html that referenced this pull request May 19, 2016
As discussed in #473, starting especially from around
#473 (comment), the
definition of incumbent introduced in #401 falls down in certain
important cases. In order to fix this, we introduce the "backup
incumbent settings object stack", which takes care of these trickier
cases. This commit also adds a few examples of how exactly incumbent
settings object calculation works, especially in the case where the
backup incumbent settings object stack ends up mattering.

For this story to be fully coherent, we will also need the minor fixes
found in tc39/ecma262#556, as well as further revisions to Web IDL to
update it for this new framework. This commit is the first step,
however.
domenic added a commit to whatwg/html that referenced this pull request May 20, 2016
As discussed in #473, starting especially from around
#473 (comment), the
definition of incumbent introduced in #401 falls down in certain
important cases. In order to fix this, we introduce the "backup
incumbent settings object stack", which takes care of these trickier
cases. This commit also adds a few examples of how exactly incumbent
settings object calculation works, especially in the case where the
backup incumbent settings object stack ends up mattering.

For this story to be fully coherent, we will also need the minor fixes
found in tc39/ecma262#556, as well as further revisions to Web IDL to
update it for this new framework. This commit is the first step,
however.
domenic added a commit to whatwg/html that referenced this pull request Jun 1, 2016
As discussed in #473, starting especially from around
#473 (comment), the
definition of incumbent introduced in #401 falls down in certain
important cases. In order to fix this, we introduce the "backup
incumbent settings object stack", which takes care of these trickier
cases. This commit also adds a few examples of how exactly incumbent
settings object calculation works, especially in the case where the
backup incumbent settings object stack ends up mattering.

For this story to be fully coherent, we will also need the minor fixes
found in tc39/ecma262#556, as well as further revisions to Web IDL to
update it for this new framework. This commit is the first step,
however.
jmdyck added a commit to jmdyck/ecma262 that referenced this pull request Sep 24, 2020
A built-in function that is implemented as an exotic object
has no need for a [[ScriptOrModule]] internal slot.
It always has the value `*null*`,
and the only place it's used is in
[the [[Call]] and [[Construct]] methods for exotic built-ins](sec-built-in-function-objects-call-thisargument-argumentslist),
so we can just inline `*null*` there.

The remaining 3 appearances of [[ScriptOrModule]]
pertain only to ordinary functions.

(Setting [[ScriptOrModule]] for exotic built-ins
made more sense when the slot was introduced,
because of the way GetActiveScriptOrModule() was written,
but PR tc39#556 changed it to basically the current situation.)
ljharb pushed a commit to jmdyck/ecma262 that referenced this pull request Nov 3, 2020
A built-in function that is implemented as an exotic object
has no need for a [[ScriptOrModule]] internal slot.
It always has the value `*null*`,
and the only place it's used is in
[the [[Call]] and [[Construct]] methods for exotic built-ins](sec-built-in-function-objects-call-thisargument-argumentslist),
so we can just inline `*null*` there.

The remaining 3 appearances of [[ScriptOrModule]]
pertain only to ordinary functions.

(Setting [[ScriptOrModule]] for exotic built-ins
made more sense when the slot was introduced,
because of the way GetActiveScriptOrModule() was written,
but PR tc39#556 changed it to basically the current situation.)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants