WebAssembly.Module.customSections()
        
        
          
                Baseline
                
                  Widely available
                
                
              
        
        
        
          
                
              
                
              
                
              
        
        
      
      This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2017年10月.
WebAssembly.customSections() 関数はモジュールと文字列名を指定して、すべてのカスタムセクションのコンテンツのコピーを返します。
構文
WebAssembly.Module.customSections(module, sectionName);
引数
- module
 - 
カスタムセクションを考慮する
WebAssembly.Moduleオブジェクト。 - sectionName
 - 
目的のカスタムセクションの文字列名。
 
返値
sectionName に一致するすべてのカスタムセクションの ArrayBuffer コピーの配列 (空の場合もあります)。
例外
module が WebAssembly.Module オブジェクトのインスタンスでない場合、TypeError が発生します。
解説
wasm モジュールは一連の セクション で構成されています。これらのセクションのほとんどは wasm の仕様によって完全に指定、検証されますが、検証中に無視されスキップされる カスタムセクション をモジュールに含めることができます (通常のセクション ("既知のセクション") とカスタムセクションを区別するための情報は 高レベルの構造 を読んでください)。
これにより開発者は他の目的のために wasm モジュール内にカスタムデータを含めることができます。例えば、開発者がモジュール内の全ての関数とローカル変数に名前を付けられる (ネイティブビルドにおける "シンボル" のようなもの) ネームカスタムセクション のようなものがあります 。
なお、 WebAssembly テキストフォーマットには現在新しいカスタムセクションのための構文の仕様がありません。しかし、テキストフォーマットから .wasm に変換するときに wasm にネームセクションを追加することができます。 wabt tool の一部である wast2wasm コマンドで --debug-names オプションを指定することができ、これを指定することにより、ネームカスタムセクションを持つ .wasm に変換することができます。
wast2wasm simple-name-section.was -o simple-name-section.wasm --debug-names
例
>customSections の使用
次の例では (custom-section.html のソースと動作例をご確認ください) 、読み込んだ section.wasm バイトコードをコンパイルします。
それから、WebAssembly.Module.customSections を使用して length が 0 より大きいかチェックして、モジュールに "name" カスタムセクションが含まれているかどうかチェックします。この例では "name" カスタムセクションが存在するため、ArrayBuffer オブジェクトが返されます。
WebAssembly.compileStreaming(fetch("simple-name-section.wasm")).then(
  function (mod) {
    var nameSections = WebAssembly.Module.customSections(mod, "name");
    if (nameSections.length != 0) {
      console.log("Module contains a name section");
      console.log(nameSections[0]);
    }
  },
);
仕様書
| Specification | 
|---|
| WebAssembly JavaScript Interface> # dom-module-customsections>  | 
            
ブラウザーの互換性
Loading…