Skip to main content

Module interp

Module interp 

Source
Expand description

ツリーウォーク評価器。

  • スコープは Rc<RefCell<Scope>> のチェーン(関数呼出ごとに新スコープ。Phase 1 では ブロックスコープは作らず関数スコープ共有)。
  • 例外は Result<_, Value>Err が throw された値)で伝播。
  • 制御フローは Completion
  • ステップ予算再帰深度上限で無限ループ/暴走から OS を守る。超過時は aborted を立て、catch では捕捉せず最上位まで巻き戻す。

Modules§

calls 🔒
dom_props 🔒
eval_expr 🔒
exec 🔒
iter_gen 🔒
operators 🔒
promise_loop 🔒
properties 🔒

Structs§

GenReplay 🔒
generator 本体の replay 実行中に保持する一時状態。
Interp
1 回の評価セッションの実行器(ステップ予算等を保持)。
JsRuntime
ページ単位で永続するランタイム状態。
ModuleRecord
登録済み ES モジュール 1 件。exports が None なら未評価。 評価開始時に空の共有マップを先に入れておくことで循環 import に耐える (再入時は評価途中の部分マップが返る)。
Scope
変数スコープ。

Enums§

CallKind 🔒
Completion 🔒
文の完了種別。Break/ContinueOption<String> はラベル(break label; 等)。
DomDisp 🔒
DOM プロキシの種別(借用を跨がないよう kind を取り出した結果)。

Constants§

DEFAULT_MAX_DEPTH 🔒
DEFAULT_MAX_STEPS 🔒
MODULE_EXPORTS_KEY 🔒
モジュール本体の評価スコープで export 収集オブジェクトを束縛する番兵キー。 通常の識別子と衝突しない制御文字を含める。

Functions§

aria_attr_name 🔒
ARIA 反映 IDL 属性(element.role/.ariaLabel/.ariaValueNow 等)の プロパティ名 → 実際の content 属性名の対応表。aria-valuenow のように 複合語内部にハイフンを持たない属性が多いため、dataset と同じ単純な camelCase⇄kebab-case 変換は使えず、固定表で引く(丸ごと未対応だった)。 ここに無い aria* プロパティは対象外(低頻度のものは既知の未対応のまま)。
camel_to_data_attr 🔒
dataset のキー(camelCase)を data-kebab-case 属性名へ変換。userIddata-user-id
camel_to_kebab 🔒
camelCase を kebab-case へ変換。backgroundColorbackground-color。 既に kebab(- 含む)や小文字のみならほぼそのまま。
cmp 🔒
cmp_f64 🔒
2 つの f64 を比較。NaN が絡むと None。
infer_function_name 🔒
NamedEvaluation(ES2015 13.15.2 等)の簡易実装: v が無名関数(fd.name が空) なら name を継承させる。const f = function(){} 等、単純な識別子への代入経路 でのみ対応(object literal のプロパティ/デフォルト引数値としての NamedEvaluation は 非対応の簡略化)。既に名前を持つ関数(function foo(){} 等)は上書きしない。
iterable_values
イテラブル(配列/文字列/Set/Map)を Value 列へ展開する。スプレッド・for-of 共通。
loose_eq 🔒
powf 🔒
scope_assign 🔒
既存変数へ代入(最も近い定義スコープ)。未定義なら false。
scope_declare 🔒
scope_get 🔒
shift_amount 🔒
BigInt のシフト量を i64 に変換する。f64 経由で安全範囲(|n| < 2^31)に収まるもののみ Some。 過大なシフトは現実的なメモリ上限を超えるため None を返して呼び出し側でエラーにする。
to_i32 🔒
to_property_key 🔒
to_u32 🔒

Type Aliases§

EvalResult 🔒
ModuleRegistry
指定子 → モジュール記録のレジストリ(ランタイムと実行器で共有)。