From e35a795d7236ad7eebd1de40a1ca00e83912b0bc Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Tue, 7 Sep 2021 22:49:03 +0900 Subject: Global_Objects/WebAssembly/Memory 以下を更新 (#2283) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Markdownに変換 - 2021/08/30 時点の英語版に同期 --- .../webassembly/memory/buffer/index.html | 60 -------------- .../webassembly/memory/buffer/index.md | 49 ++++++++++++ .../webassembly/memory/grow/index.html | 78 ------------------ .../webassembly/memory/grow/index.md | 67 ++++++++++++++++ .../global_objects/webassembly/memory/index.html | 89 --------------------- .../global_objects/webassembly/memory/index.md | 90 +++++++++++++++++++++ .../webassembly/memory/memory/index.html | 92 ---------------------- .../webassembly/memory/memory/index.md | 91 +++++++++++++++++++++ 8 files changed, 297 insertions(+), 319 deletions(-) delete mode 100644 files/ja/web/javascript/reference/global_objects/webassembly/memory/buffer/index.html create mode 100644 files/ja/web/javascript/reference/global_objects/webassembly/memory/buffer/index.md delete mode 100644 files/ja/web/javascript/reference/global_objects/webassembly/memory/grow/index.html create mode 100644 files/ja/web/javascript/reference/global_objects/webassembly/memory/grow/index.md delete mode 100644 files/ja/web/javascript/reference/global_objects/webassembly/memory/index.html create mode 100644 files/ja/web/javascript/reference/global_objects/webassembly/memory/index.md delete mode 100644 files/ja/web/javascript/reference/global_objects/webassembly/memory/memory/index.html create mode 100644 files/ja/web/javascript/reference/global_objects/webassembly/memory/memory/index.md (limited to 'files/ja') diff --git a/files/ja/web/javascript/reference/global_objects/webassembly/memory/buffer/index.html b/files/ja/web/javascript/reference/global_objects/webassembly/memory/buffer/index.html deleted file mode 100644 index 78052aba53..0000000000 --- a/files/ja/web/javascript/reference/global_objects/webassembly/memory/buffer/index.html +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: WebAssembly.Memory.prototype.buffer -slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory/buffer -tags: - - API - - Buffer - - JavaScript - - Property - - Reference - - WebAssembly - - memory - - プロパティ -translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory/buffer ---- -
{{JSRef}}
- -

buffer は {{jsxref("WebAssembly.Memory")}} オブジェクトのプロトタイププロパティで、メモリに含まれるバッファーを返します。

- -

- -

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

- -
WebAssembly.instantiateStreaming(fetch('memory.wasm'), { js: { mem: memory } })
-.then(obj => {
-  var i32 = new Uint32Array(memory.buffer);
-  for (var i = 0; i < 10; i++) {
-    i32[i] = i;
-  }
-  var sum = obj.instance.exports.accumulate(0, 10);
-  console.log(sum);
-});
- -

仕様書

- - - - - - - - - - - - -
仕様書
{{SpecName('WebAssembly JS', '#dom-memory-buffer', 'buffer')}}
- -

ブラウザーの互換性

- -
-

{{Compat("javascript.builtins.WebAssembly.Memory.buffer")}}

-
- -

関連情報

- - diff --git a/files/ja/web/javascript/reference/global_objects/webassembly/memory/buffer/index.md b/files/ja/web/javascript/reference/global_objects/webassembly/memory/buffer/index.md new file mode 100644 index 0000000000..49b0be1e58 --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/webassembly/memory/buffer/index.md @@ -0,0 +1,49 @@ +--- +title: WebAssembly.Memory.prototype.buffer +slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory/buffer +tags: + - API + - Buffer + - JavaScript + - プロパティ + - Reference + - WebAssembly + - memory +browser-compat: javascript.builtins.WebAssembly.Memory.buffer +translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory/buffer +--- +{{JSRef}} + +**`buffer`** は {{jsxref("WebAssembly.Memory")}} オブジェクトのプロトタイププロパティで、メモリーに含まれるバッファーを返します。 + +## 例 + +### buffer の使用 + +次の例 (GitHub 上の [memory.html](https://github.com/mdn/webassembly-examples/blob/master/js-api-examples/memory.html) および[動作例](https://mdn.github.io/webassembly-examples/js-api-examples/memory.html)も参照) では、 memory.wasm バイトコードを {{jsxref("WebAssembly.instantiateStreaming()")}} メソッドを使用して読み込みんでインスタンス化し、その上の行で生成されたメモリーにインポートします。それから、メモリーにいくつかの値を格納し、関数をエクスポートして使用し、いくつかの値を合計します。 + +```js +WebAssembly.instantiateStreaming(fetch('memory.wasm'), { js: { mem: memory } }) +.then(obj => { +  var i32 = new Uint32Array(memory.buffer); +  for (var i = 0; i < 10; i++) { +    i32[i] = i; +  } +  var sum = obj.instance.exports.accumulate(0, 10); +  console.log(sum); +}); +``` + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} + +## 関連情報 + +- [WebAssembly](/ja/docs/WebAssembly) 概要ページ +- [WebAssembly の概念](/ja/docs/WebAssembly/Concepts) +- [WebAssembly JavaScript API の使用](/ja/docs/WebAssembly/Using_the_JavaScript_API) diff --git a/files/ja/web/javascript/reference/global_objects/webassembly/memory/grow/index.html b/files/ja/web/javascript/reference/global_objects/webassembly/memory/grow/index.html deleted file mode 100644 index 7f7d936a08..0000000000 --- a/files/ja/web/javascript/reference/global_objects/webassembly/memory/grow/index.html +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: WebAssembly.Memory.prototype.grow() -slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory/grow -tags: - - API - - JavaScript - - Method - - Reference - - WebAssembly - - grow - - memory - - メソッド -translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory/grow ---- -
{{JSRef}}
- -

grow() は {{jsxref("WebAssembly.Memory")}} オブジェクトのプロトタイプメソッドで、指定した WebAssembly ページの数だけメモリインスタンスの大きさを拡張します。

- -

構文

- -
memory.grow(number);
-
- -

引数

- -
-
number
-
メモリを拡大する WebAssembly ページ数 (それぞれは 64KiB の大きさ)。
-
- -

返値

- -

以前のメモリの大きさを、 WebAssembly ページ単位で返します。

- -

- -

以下の例では、新しい WebAssembly メモリインスタンスを初期サイズ1ページ (64KiB)、最大サイズ10ページ (640KiB) で作成します。

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

それから、インスタンスを1ページ分拡張することができます。

- -
const bytesPerPage = 64 * 1024;
-console.log(memory.buffer.byteLength / bytesPerPage);  // "1"
-console.log(memory.grow(1));                           // "1"
-console.log(memory.buffer.byteLength / bytesPerPage);  // "2"
-
- -

なお、ここでの grow() の返値は直前の WebAssembly ページ数です。

- -

仕様書

- - - - - - - - - - - - -
仕様書
{{SpecName('WebAssembly JS', '#dom-memory-grow', 'grow()')}}
- -

ブラウザーの互換性

- -
-

{{Compat("javascript.builtins.WebAssembly.Memory.grow")}}

-
- -

関連情報

- - diff --git a/files/ja/web/javascript/reference/global_objects/webassembly/memory/grow/index.md b/files/ja/web/javascript/reference/global_objects/webassembly/memory/grow/index.md new file mode 100644 index 0000000000..e868d4621a --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/webassembly/memory/grow/index.md @@ -0,0 +1,67 @@ +--- +title: WebAssembly.Memory.prototype.grow() +slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory/grow +tags: + - API + - JavaScript + - メソッド + - Reference + - WebAssembly + - grow + - memory +browser-compat: javascript.builtins.WebAssembly.Memory.grow +translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory/grow +--- +{{JSRef}} + +**`grow()`** は [`Memory`](/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory) オブジェクトのプロトタイプメソッドで、指定した WebAssembly ページの数だけメモリーインスタンスの大きさを拡張します。 + +## 構文 + +```js +grow(number) +``` + +## 引数 + +- _number_ + - : メモリーを拡大する WebAssembly ページ数 (それぞれは 64KiB の大きさ)。 + +### 返値 + +以前のメモリーの大きさを、 WebAssembly ページ単位で返します。 + +## 例 + +### grow の使用 + +以下の例では、新しい WebAssembly メモリーインスタンスを初期サイズ 1 ページ (64KiB)、最大サイズ 10 ページ (640KiB) で作成します。 + +```js +var memory = new WebAssembly.Memory({initial:1, maximum:10}); +``` + +それから、インスタンスを 1 ページ分拡張することができます。 + +```js +const bytesPerPage = 64 * 1024; +console.log(memory.buffer.byteLength / bytesPerPage); // "1" +console.log(memory.grow(1)); // "1" +console.log(memory.buffer.byteLength / bytesPerPage); // "2" +``` + +なお、ここでの `grow()` の返値は直前の WebAssembly ページ数です。 + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} + +## 関連情報 + +- [WebAssembly](/ja/docs/WebAssembly) 概要ページ +- [WebAssembly の概念](/ja/docs/WebAssembly/Concepts) +- [WebAssembly JavaScript API の使用](/ja/docs/WebAssembly/Using_the_JavaScript_API) diff --git a/files/ja/web/javascript/reference/global_objects/webassembly/memory/index.html b/files/ja/web/javascript/reference/global_objects/webassembly/memory/index.html deleted file mode 100644 index 4064df7666..0000000000 --- a/files/ja/web/javascript/reference/global_objects/webassembly/memory/index.html +++ /dev/null @@ -1,89 +0,0 @@ ---- -title: WebAssembly.Memory() -slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory -tags: - - Class - - JavaScript - - Reference - - WebAssembly - - クラス -translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory ---- -
{{JSRef}}
- -

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

- -

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

- -

コンストラクター

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

Memory インスタンス

- -

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

- -

インスタンスプロパティ

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

インスタンスメソッド

- -
-
{{jsxref("WebAssembly/Memory/grow","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 バイトコードを {{jsxref("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);
-});
- -

仕様書

- - - - - - - - - - - - -
仕様書
{{SpecName('WebAssembly JS', '#memories', 'Memory')}}
- -

ブラウザーの互換性

- -
-

{{Compat("javascript.builtins.WebAssembly.Memory")}}

-
- -

関連情報

- - diff --git a/files/ja/web/javascript/reference/global_objects/webassembly/memory/index.md b/files/ja/web/javascript/reference/global_objects/webassembly/memory/index.md new file mode 100644 index 0000000000..5432227ae2 --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/webassembly/memory/index.md @@ -0,0 +1,90 @@ +--- +title: WebAssembly.Memory() +slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory +tags: + - クラス + - JavaScript + - Reference + - WebAssembly +browser-compat: javascript.builtins.WebAssembly.Memory +translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory +--- +{{JSRef}} + +**`WebAssembly.Memory`** オブジェクトはサイズ変更可能な {{jsxref("ArrayBuffer")}} または [`SharedArrayBuffer`](/ja/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer) であり、 WebAssembly `Instance` からアクセスする生のバイト列のメモリーを持ちます。

+ +JavaScript または WebAssembly コードから生成されたメモリーは JavaScript と WebAssembly のどちらからもアクセス、変更が可能になります。 + +## コンストラクター + +- [`WebAssembly.Memory()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory/Memory) + - : 新しい `Memory` オブジェクトを生成します。 + +## インスタンスプロパティ + +- [`Memory.prototype.buffer`](/ja/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory/buffer) + - : メモリーに格納されているバッファーを返すアクセサープロパティです。 + +## インスタンスメソッド + +- [`Memory.prototype.grow()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory/grow) + - : 指定した WebAssembly ページ (64KB で 1 単位) の数でメモリーのインスタンスのサイズを増やします。 + +## 例 + +### 新しい Memory オブジェクトの生成 + +`WebAssembly.Memory` オブジェクトを取得する方法は 2 つあります。 1 つ目は JavaScript から生成する方法です。以下の例では、初期サイズが 10 ページ (640KiB) 、最大サイズが 100 ページ (6.4MiB) で新しい WebAssembly Memory インスタンスを生成しています。その [`buffer`](/ja/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory/buffer) プロパティは [`ArrayBuffer`](/ja/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer) を返します。 + +```js +var memory = new WebAssembly.Memory({initial:10, maximum:100}); +``` + +次の例では (GitHub 上の [memory.html](https://github.com/mdn/webassembly-examples/blob/master/js-api-examples/memory.html) および[実行例](https://mdn.github.io/webassembly-examples/js-api-examples/memory.html)も参照)、 memory.wasm バイトコードを {{jsxref("WebAssembly.instantiateStreaming()")}} メソッドを使用して読み込みんでインスタンス化し、その上の行で生成されたメモリにインポートします。それから、メモリにいくつかの値を格納し、関数をエクスポートして使用し、いくつかの値を合計します。 + +```js +WebAssembly.instantiateStreaming(fetch('memory.wasm'), { js: { mem: memory } }) +.then(obj => { +  var i32 = new Uint32Array(memory.buffer); +  for (var i = 0; i < 10; i++) { +    i32[i] = i; +  } +  var sum = obj.instance.exports.accumulate(0, 10); +  console.log(sum); +}); +``` + +WebAssembly.Memory オブジェクトを取得する 2 つ目の方法は、 WebAssembly モジュールによってエクスポートされることです。このメモリは WebAssembly インスタンスの `exports` プロパティで (メモリーが WebAssembly モジュール内でエクスポートされた後に) アクセスできます。次のスニペットは、 WebAssembly からエクスポートされたメモリを `memory`という名前でインポートし、メモリーの最初の要素を Uint32Array として解釈して表示しています。 + +```js +WebAssembly.instantiateStreaming(fetch('memory.wasm')) +.then(obj => { +   var i32 = new Uint32Array(obj.instance.exports.memory.buffer); +  console.log(i32[0]); + }); +``` + +### 共有メモリーの作成 + +既定では、 WebAssembly のメモリーは共有されていません。[共有メモリー](/ja/docs/WebAssembly/Understanding_the_text_format#shared_memories)を作成するには、コンストラクター +の初期化オブジェクトに `shared: true` を渡します。 + +```js +let memory = new WebAssembly.Memory({initial:10, maximum:100, shared: true}); +``` + +このメモリーの `buffer` プロパティは [`SharedArrayBuffer`](/ja/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer) を返します。 + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} + +## 関連情報 + +- [WebAssembly](/ja/docs/WebAssembly) 概要ページ +- [WebAssembly の概念](/ja/docs/WebAssembly/Concepts) +- [WebAssembly JavaScript API の使用](/ja/docs/WebAssembly/Using_the_JavaScript_API) diff --git a/files/ja/web/javascript/reference/global_objects/webassembly/memory/memory/index.html b/files/ja/web/javascript/reference/global_objects/webassembly/memory/memory/index.html deleted file mode 100644 index 4c9c8f1d09..0000000000 --- a/files/ja/web/javascript/reference/global_objects/webassembly/memory/memory/index.html +++ /dev/null @@ -1,92 +0,0 @@ ---- -title: WebAssembly.Memory() コンストラクター -slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory/Memory -tags: - - Constructor - - JavaScript - - Reference - - WebAssembly - - コンストラクター -translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory/Memory ---- -
{{JSRef}}
- -

The WebAssembly.Memory() コンストラクターは新しい Memory オブジェクトを生成します。これは {{jsxref("WebAssembly/Memory/buffer","buffer")}} プロパティでサイズ変更可能な {{jsxref("ArrayBuffer")}} により、 WebAssembly Instance からアクセスする生のバイト列のメモリを持ちます。

- -

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

- -

構文

- -
new WebAssembly.Memory(memoryDescriptor);
- -

引数

- -
-
memoryDescriptor
-
以下のメンバーを含むことができるオブジェクトです。 -
-
initial
-
WebAssembly メモリの初期サイズで、単位は WebAssembly ページ数です。
-
maximum {{optional_inline}}
-
WebAssembly メモリを拡張できる最大サイズで、単位は WebAssembly ページ数です。存在する場合、 maximum 引数はエンジンがメモリを予約するヒントとして使用されます。ただし、エンジンはこの予約リクエストを無視したり固定したりすることがあります。一般的に、ほとんどの WebAssembly モジュールは maximum を設定する必要はありません。
-
-
-
- -
-

メモ: WebAssembly ページは 65,536 バイト、すなわち 64KiB の固定長です。

-
- -

例外

- - - -

- -

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 バイトコードを {{jsxref("WebAssembly.instantiateStreaming()")}} メソッドを使用して読み込みんでインスタンス化し、その上の行で生成されたメモリにインポートします。それから、メモリにいくつかの値を格納し、関数をエクスポートして使用し、いくつかの値を合計します。

- -
WebAssembly.instantiateStreaming(fetch('memory.wasm'), { js: { mem: memory } })
-.then(obj => {
-  var i32 = new Uint32Array(memory.buffer);
-  for (var i = 0; i < 10; i++) {
-    i32[i] = i;
-  }
-  var sum = obj.instance.exports.accumulate(0, 10);
-  console.log(sum);
-});
- -

仕様書

- - - - - - - - - - - - -
仕様書
{{SpecName('WebAssembly JS', '#dom-memory-memory', 'Memory')}}
- -

ブラウザーの互換性

- -
-

{{Compat("javascript.builtins.WebAssembly.Memory.Memory")}}

-
- -

関連情報

- - diff --git a/files/ja/web/javascript/reference/global_objects/webassembly/memory/memory/index.md b/files/ja/web/javascript/reference/global_objects/webassembly/memory/memory/index.md new file mode 100644 index 0000000000..377afbde14 --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/webassembly/memory/memory/index.md @@ -0,0 +1,91 @@ +--- +title: WebAssembly.Memory() コンストラクター +slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory/Memory +tags: + - コンストラクター + - JavaScript + - Reference + - WebAssembly +browser-compat: javascript.builtins.WebAssembly.Memory.Memory +translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory/Memory +--- +{{JSRef}} + +**`WebAssembly.Memory()`** コンストラクターは新しい `Memory` オブジェクトを生成します。これは {{jsxref("WebAssembly/Memory/buffer","buffer")}} プロパティがサイズ変更可能な [`ArrayBuffer`](/ja/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer) または `SharedArrayBuffer` であり、 WebAssembly の `Instance` からアクセスする生のバイト列のメモリーであるものです。 + +JavaScript または WebAssembly コードから生成されたメモリーは JavaScript と WebAssembly のどちらからもアクセス、変更が可能になります。 + +## 構文 + +```js +new WebAssembly.Memory(memoryDescriptor) +``` + +### 引数 + +- _memoryDescriptor_ + + - : 以下のメンバーを含むことができるオブジェクトです。 + + - _initial_ + - : WebAssembly メモリーの初期サイズで、単位は WebAssembly ページ数です。 + - _maximum {{optional_inline}}_ + - : WebAssembly メモリーを拡張できる最大サイズで、単位は WebAssembly ページ数です。存在する場合、 `maximum` 引数はエンジンがメモリーを予約するヒントとして使用されます。ただし、エンジンはこの予約リクエストを無視したり固定したりすることがあります。一般的に、ほとんどの WebAssembly モジュールでは `maximum` を設定する必要はありません。 + - shared _{{optional_inline}}_ + - : 論理値で、このメモリーを共有メモリーにするかどうかを定義します。 `true` に設定すると、共有メモリーになります。既定値は `false` です。 + +> **Note:** WebAssembly ページは 65,536 バイト、すなわち 64KiB の固定長です。 + +### 例外 + +- `memoryDescriptor` がオブジェクトでない場合は、 {{jsxref("TypeError")}} が発生します。 +- `maximum` が設定されており、かつ `initial` よりも小さい場合は、 {{jsxref("RangeError")}} が発生します。 + +## 例 + +### 新しい Memory インスタンスの作成 + +`WebAssembly.Memory` オブジェクトを取得する方法は 2 つあります。 1 つ目は JavaScript から構築する方法です。次の例では、新しい WebAssembly Memory インスタンスを初期サイズが 10 ページ (640KiB) 、最大サイズが 100 ページ (6.4MiB) で生成しています。この [`buffer`](/ja/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory/buffer) プロパティは [`ArrayBuffer`](/ja/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer) を返します。 + +```js +var memory = new WebAssembly.Memory({initial:10, maximum:100}); +``` + +2 つ目は WebAssembly モジュールからエクスポートされた `WebAssembly.Memory` オブジェクトを使用する方法です。次の例では (GitHub 上の [memory.html](https://github.com/mdn/webassembly-examples/blob/master/js-api-examples/memory.html) および[動作例](https://mdn.github.io/webassembly-examples/js-api-examples/memory.html)も参照)、 memory.wasm バイトコードを {{jsxref("WebAssembly.instantiateStreaming()")}} メソッドで読み込みんでインスタンス化し、その上の行で生成されたメモリーにインポートします。それから、メモリーにいくつかの値を格納し、関数をエクスポートして使用し、いくつかの値を合計します。 + +```js +WebAssembly.instantiateStreaming(fetch('memory.wasm'), { js: { mem: memory } }) +.then(obj => { +  var i32 = new Uint32Array(memory.buffer); +  for (var i = 0; i < 10; i++) { +    i32[i] = i; +  } +  var sum = obj.instance.exports.accumulate(0, 10); +  console.log(sum); +}); +``` + +### 共有メモリーの作成 + +既定では、 WebAssembly のメモリーは共有されていません。[共有メモリー](/ja/docs/WebAssembly/Understanding_the_text_format#shared_memories)を作成するには、コンストラクター +の初期化オブジェクトに `shared: true` を渡してください。 + +```js +let memory = new WebAssembly.Memory({initial:10, maximum:100, shared:true}); +``` + +このメモリーの `buffer` プロパティは [`SharedArrayBuffer`](/ja/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer) を返します。 + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} + +## 関連情報 + +- [WebAssembly](/ja/docs/WebAssembly) 概要ページ +- [WebAssembly の概念](/ja/docs/WebAssembly/Concepts) +- [WebAssembly JavaScript API の使用](/ja/docs/WebAssembly/Using_the_JavaScript_API) -- cgit v1.2.3-54-g00ecf