* 仕様書

[REFS[
- [39] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2014-04-03 03:44:44 +09:00]] 版) <http://www.whatwg.org/specs/web-apps/current-work/#calling-scripts>
]REFS]

* 演算

[3] [[コールバックを走らせる準備]]や[[約束コールバックを実行]]で [[JavaScript実行文脈]]が上に [[push]] されます。

[4] [[コールバックを走らせた後の片付け]]や[[約束コールバックを実行]]で [[JavaScript実行文脈]]が削除されます。

[5] [[イベントループのスピン]]で[[スタック]]全体が複製されたり、
空にされたり、
複製した状態に戻されたりします。

[9] [[イベントハンドラー]]も [[push]] や削除を行います。

[7] [[走っているスクリプトの中断]]で空にされます。

[6] [[コールバックを走らせた後の片付け]]や
[CODE(HTMLe)@en[[[script]]]] [[終了タグ]]の[[構文解析器]]の処理で、
[[スタック]]が空かどうかが検査されます。

[10] [[新しいJavaScript realmの作成]]でも操作されます。

* 歴史

** スクリプト設定群オブジェクトのスタック

[1] [[現職スクリプト]]の[[引数]]が[[スクリプト設定群オブジェクト]]として再編され、
[[スクリプト設定群オブジェクトのスタック]]が [[HTML Standard]] [[仕様書]]上の概念として導入されました。

;; [[環境設定群オブジェクト]]の歴史の項も参照。

[40] [[関連する類似起源閲覧文脈の単位]]ごとに1つ、
[DFN[[RUBYB[[[スクリプト設定群オブジェクトのスタック]]]@en[stack of script settings objects]]]]があります。 [SRC[>>39]]

;; [54] [[Web IDL]] では[DFN[[RUBYB[現職スクリプト群のスタック]@en[stack of incumbent scripts]]]]となっています。

[41] この[[スタック]]は、[[環境設定群オブジェクト]]を追加 ([[push]]) したり削除 ([[pop]])
したりできるものです。この[[スタック]]は、初期状態では空でなければ[['''なりません''']] [SRC[>>39]]。
このスタックに含まれる各項目 ([[環境設定群オブジェクト]]) には、
「[RUBYB[[[候補入口設定群オブジェクト]]]@en[candidate entry settings object]]」
というフラグをつけることができます [SRC[>>39]]。

[58] [[コード入口点に飛ぶ]]手順では、 [[JavaScript]] コードの実行の直前に[[スタック]]に [[push]]
され、直後に [[pop]] されます。

[55] [[コールバック関数の呼び出し]]では、 [[JavaScript]] [[関数]]の呼び出しの直前に[[スクリプト]]が[[現職スクリプトのスタック]]に [[push]]
され、直後に [[pop]] されます。

[56] 最も直近に [[push]] されたものを、[[現職設定群オブジェクト]]といいます。

[57] 最も直近に [[push]] された[[候補入口設定群オブジェクト]]フラグ付きのものを、
[[入口設定群オブジェクト]]といいます。

;; [61] 用法は、[[現職設定群オブジェクト]]と[[入口設定群オブジェクト]]を参照。

** 実行文脈スタック

[2] [CITE@en[Rewrite script execution on top of ES · whatwg/html@4891d18]] ([TIME[2015-12-22 22:10:28 +09:00]] 版) <https://github.com/whatwg/html/commit/4891d18aaf2df1d40aa61f467a5a10cfc19dd85d>

[8] [CITE@en[Merge pull request #113 from domenic/modernize-invoke]]
( ([[bzbarsky]]著, [TIME[2016-05-21 05:55:00 +09:00]]))
<https://github.com/heycam/webidl/commit/09c011d8de1077fe5991ceded97838650e376f6c>

[11] [CITE@en[Pop execution context off the stack after InitializeHostDefinedRealm · Issue #3784 · whatwg/html]]
([TIME[2018-07-30 17:45:04 +09:00]])
<https://github.com/whatwg/html/issues/3784>

[12] [CITE@en[Fix calls to InitializeHostDefinedRealm by TimothyGu · Pull Request #3838 · whatwg/html]]
([TIME[2018-07-30 17:45:40 +09:00]])
<https://github.com/whatwg/html/pull/3838>