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移植
- 間接呼び出し(インダイレクトコール)