@@ -3028,13 +3028,13 @@ a.setAttribute('href', 'http://example.com/'); // change the content attribute d
3028
3028
<li>The <dfn data-noexport="" data-x-href="https://tc39.github.io/ecma262/#sec-ordinaryownpropertykeys">OrdinaryOwnPropertyKeys</dfn> abstract operation</li>
3029
3029
<li>The <dfn data-noexport="" data-x="js-ParseModule" data-x-href="https://tc39.github.io/ecma262/#sec-parsemodule">ParseModule</dfn> abstract operation</li>
3030
3030
<li>The <dfn data-noexport="" data-x="js-ParseScript" data-x-href="https://tc39.github.io/ecma262/#sec-parse-script">ParseScript</dfn> abstract operation</li>
3031
+ <li>The <dfn data-noexport="" data-x-href="https://tc39.github.io/ecma262/#sec-runjobs">RunJobs</dfn> abstract operation</li>
3031
3032
<li>The <dfn data-noexport="" data-x-href="https://tc39.github.io/ecma262/#sec-samevalue">SameValue</dfn> abstract operation</li>
3032
3033
<li>The <dfn data-noexport="" data-x="js-ScriptEvaluation" data-x-href="https://tc39.github.io/ecma262/#sec-runtime-semantics-scriptevaluation">ScriptEvaluation</dfn> abstract operation</li>
3033
3034
<li>The <dfn data-noexport="" data-x="js-ToBoolean" data-x-href="https://tc39.github.io/ecma262/#sec-toboolean">ToBoolean</dfn> abstract operation</li>
3034
3035
<li>The <dfn data-noexport="" data-x-href="https://tc39.github.io/ecma262/#sec-tostring">ToString</dfn> abstract operation</li>
3035
3036
<li>The <dfn data-noexport="" data-x-href="https://tc39.github.io/ecma262/#sec-touint32">ToUint32</dfn> abstract operation</li>
3036
3037
<li>The <dfn data-noexport="" data-x-href="https://tc39.github.io/ecma262/#typedarray-create">TypedArrayCreate</dfn> abstract operation</li>
3037
- <li>The <dfn data-noexport="" data-x="js-NextJob" data-x-href="https://tc39.github.io/ecma262/#sec-nextjob-result">NextJob</dfn> algorithm step
3038
3038
<li>The <dfn data-noexport="" data-x="js-abstract-equality" data-x-href="https://tc39.github.io/ecma262/#sec-abstract-equality-comparison">Abstract Equality Comparison</dfn> algorithm
3039
3039
<li>The <dfn data-noexport="" data-x="js-strict-equality" data-x-href="https://tc39.github.io/ecma262/#sec-strict-equality-comparison">Strict Equality Comparison</dfn> algorithm
3040
3040
<li>The <dfn data-noexport="" data-x-href="https://tc39.github.io/ecma262/#sec-date-objects"><code>Date</code></dfn> class
@@ -75977,8 +75977,6 @@ dictionary <dfn>DragEventInit</dfn> : <span>MouseEventInit</span> {
75977
75977
75978
75978
<li><p>Let <var>realm execution context</var> be the created <span>JavaScript execution
75979
75979
context</span>.</p></li>
75980
-
75981
- <li><p>Do not obtain any source texts for scripts or modules.</p></li>
75982
75980
</ul>
75983
75981
</li>
75984
75982
@@ -85693,22 +85691,24 @@ interface <dfn>NavigatorOnLine</dfn> {
85693
85691
<p>The JavaScript specification defines the JavaScript job and job queue abstractions in order to
85694
85692
specify certain invariants about how promise operations execute with a clean <span>JavaScript
85695
85693
execution context stack</span> and in a certain order. However, as of the time of this writing
85696
- the definitions of <span data-x="js-EnqueueJob">EnqueueJob</span> and <span
85697
- data-x="js-NextJob">NextJob</span> in that specification are not sufficiently flexible to
85698
- integrate with HTML as a host environment. <ref spec="ECMA262"></p>
85694
+ the definition of <span data-x="js-EnqueueJob">EnqueueJob</span> in that specification is not
85695
+ sufficiently flexible to integrate with HTML as a host environment. <ref spec="ECMA262"></p>
85699
85696
85700
85697
<p class="note">This is not strictly true. It is in fact possible, by taking liberal advantage of
85701
- the many "implementation defined" sections of those algorithms , to contort them to our purposes.
85698
+ the many "implementation defined" sections of the algorithm , to contort it to our purposes.
85702
85699
However, the end result is a mass of messy indirection and workarounds that essentially bypasses
85703
85700
the job queue infrastructure entirely, albeit in a way that is technically sanctioned within the
85704
85701
bounds of implementation-defined behavior. We do not take this path, and instead introduce the
85705
- following <span data-x="willful violation" >willful violations </span>.</p>
85702
+ following <span>willful violation </span>.</p>
85706
85703
85707
- <p>As such, user agents must instead use the following definitions in place of those in the
85704
+ <p>As such, user agents must instead use the following definition in place of that in the
85708
85705
JavaScript specification. These ensure that the promise jobs enqueued by the JavaScript
85709
85706
specification are properly integrated into the user agent's <span data-x="event loop">event
85710
85707
loops</span>.</p>
85711
85708
85709
+ <p>The <span>RunJobs</span> abstract operation from the JavaScript specification must
85710
+ not be used by user agents.</p>
85711
+
85712
85712
<h6><dfn>EnqueueJob</dfn>(<var>queueName</var>, <var>job</var>, <var>arguments</var>)</h6>
85713
85713
85714
85714
<p>When the JavaScript specification says to call the EnqueueJob abstract operation, the
@@ -85728,28 +85728,15 @@ interface <dfn>NavigatorOnLine</dfn> {
85728
85728
<li><p><span>Check if we can run script</span> with <var>settings</var>. If this returns "do
85729
85729
not run" then abort these steps.</p></li>
85730
85730
<li><p><span>Prepare to run script</span> with <var>settings</var>.</p></li>
85731
- <li><p>Perform the abstract operation specified by <var>job </var>, using the elements of
85732
- <var>arguments</var> as its arguments.</p></li>
85731
+ <li><p>Let <var>result </var> be the result of performing the abstract operation specified by
85732
+ <var>job</var>, using the elements of <var> arguments</var> as its arguments.</p></li>
85733
85733
<li><p><span>Clean up after running script</span> with <var>settings</var>.</p></li>
85734
+ <li><p>If <var>result</var> is an abrupt completion, <span>report the exception</span> given by
85735
+ <var>result</var>.[[Value]].</p></li>
85734
85736
</ol>
85735
85737
</li>
85736
85738
</ol>
85737
85739
85738
- <h6><dfn>NextJob</dfn> <var>result</var></h6>
85739
-
85740
- <p>When the JavaScript specification uses the algorithm step NextJob, the following steps must be
85741
- used in place of those specified by JavaScript's <span data-x="js-NextJob">NextJob</span>:</p>
85742
-
85743
- <ol>
85744
- <li><p>If <var>result</var> is an abrupt completion, <span>report the exception</span> given by
85745
- <var>result</var>.[[Value]].</p></li>
85746
- </ol>
85747
-
85748
- <p class="note">A more accurate name for our overridden version of NextJob would be along the
85749
- lines of "yield to host environment" or "allow host environment to react to job results". The
85750
- process of actually initiating the next job will be taken care of by the <span>event
85751
- loop</span>.</p>
85752
-
85753
85740
<h5>Integration with the JavaScript module system</h5>
85754
85741
85755
85742
<p>The JavaScript specification defines a syntax for modules, as well as some host-agnostic parts
@@ -85792,7 +85779,7 @@ interface <dfn>NavigatorOnLine</dfn> {
85792
85779
85793
85780
<p>JavaScript contains an implementation-defined <span
85794
85781
data-x="js-HostResolveImportedModule">HostResolveImportedModule</span> abstract operation. User
85795
- agents must use the following implementation. <ref spec="ECMA262"></p>
85782
+ agents must use the following implementation: <ref spec="ECMA262"></p>
85796
85783
85797
85784
<ol>
85798
85785
<li><p>Let <var>referencing module script</var> be
@@ -86027,7 +86014,7 @@ dictionary <dfn>ErrorEventInit</dfn> : <span>EventInit</span> {
86027
86014
be reported to a developer console.</p>
86028
86015
86029
86016
86030
- <h6>The HostPromiseRejectionTracker implementation </h6>
86017
+ <h6 id="the-hostpromiserejectiontracker-implementation"><dfn> HostPromiseRejectionTracker</dfn>(<var>promise</var>, <var>operation</var>) </h6>
86031
86018
86032
86019
<p>JavaScript contains an implementation-defined <span
86033
86020
data-x="js-HostPromiseRejectionTracker">HostPromiseRejectionTracker</span>(<var>promise</var>,
@@ -87789,8 +87776,6 @@ interface <dfn>WindowBase64</dfn> {
87789
87776
87790
87777
<li><p>Let <var>realm execution context</var> be the created <span>JavaScript execution
87791
87778
context</span>.</p></li>
87792
-
87793
- <li><p>Do not obtain any source texts for scripts or modules.</p></li>
87794
87779
</ul>
87795
87780
</li>
87796
87781
@@ -94552,8 +94537,6 @@ interface <dfn>WorkerGlobalScope</dfn> : <span>EventTarget</span> {
94552
94537
94553
94538
<li><p>Let <var>realm execution context</var> be the created <span>JavaScript execution
94554
94539
context</span>.</p></li>
94555
-
94556
- <li><p>Do not obtain any source texts for scripts or modules.</p></li>
94557
94540
</ul>
94558
94541
</li>
94559
94542
0 commit comments