-
Notifications
You must be signed in to change notification settings - Fork 1.3k
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
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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.
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
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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).