コンテンツへスキップ
uencoder

WASM Table

WASM Tableは、WebAssemblyの関数参照テーブルで、間接呼び出し(call_indirect)のための関数参照を格納し、関数ポインタとvtableを実現する。

目的

WASMに安全な関数ポインタ機構を与え、間接呼び出しと動的ディスパッチ(Cの関数ポインタ、C++のvtable)をサポートする。

メカニズム

new WebAssembly.Table({element:funcanyref, initial, maximum}) で参照テーブルを作成し、get/setで参照を読み書きする。call_indirectはインデックスでテーブルの関数を呼び出す。型チェックにより、シグネチャが異なる関数の呼び出しを防ぐ。

ユースケース

  • WASMの関数ポインタ
  • C++のvtable移植
  • 間接呼び出し(インダイレクトコール)

関連ツール

References