WebAssembly.Memory()

WebAssembly.Memory オブジェクトは buffer プロパティを持ち、これはサイズ変更可能な ArrayBuffer で、 WebAssembly Instance からアクセスする生のバイト列のメモリを持ちます。

JavaScript または WebAssembly コードから生成されたメモリは JavaScript と WebAssembly のどちらからもアクセス、変更が可能になります。

コンストラクター

WebAssembly.Memory()
新しい Memory オブジェクトを生成します。

Memory インスタンス

全ての Memory インスタンスは Memory() コンストラクターのプロトタイプオブジェクトを継承しています。これは全ての Memory インスタンスに影響するように変更可能です。

インスタンスプロパティ

Memory.prototype.constructor
このオブジェクトのインスタンスを生成した関数を返します。既定では WebAssembly.Memory() コンストラクターです。
Memory.prototype.buffer
メモリに格納されているバッファーを返すアクセサープロパティです。/dd>

インスタンスメソッド

Memory.prototype.grow()
指定した WebAssembly ページの数 (64KBを1単位とする) で Memory インスタンスのサイズを増やします。

WebAssembly.Memory オブジェクトを取得する方法は2つあります。1つ目は JavaScript から生成する方法です。以下の例では、初期サイズが10ページ (640KiB) 、最大サイズが100ページ (6.4MiB) で新しい WebAssembly Memory インスタンスを生成しています。

var memory = new WebAssembly.Memory({initial:10, maximum:100});

2つ目は WebAssembly モジュールからエクスポートされた WebAssembly.Memory オブジェクトを使用する方法です。次の例では (GitHub 上の memory.html およびライブデモ版 もご覧ください)、 memory.wasm バイトコードを WebAssembly.instantiateStreaming() メソッドを使用して読み込みんでインスタンス化し、その上の行で生成されたメモリにインポートします。それから、メモリにいくつかの値を格納し、関数をエクスポートして使用し、いくつかの値を合計します。

fetchAndInstantiate('memory.wasm').then(function(instance) {
  var i32 = new Uint32Array(instance.exports.mem.buffer);
  for (var i = 0; i < 10; i++) {
    i32[i] = i;
  }
  var sum = instance.exports.accumulate(0, 10);
  console.log(sum);
});

仕様書

ブラウザーの互換性

BCD tables only load in the browser

関連情報