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