[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/fr/docs/WebAssembly/Reference/JavaScript_interface/Memory [Back]  [Original]

WebAssembly.Memory() - WebAssembly | MDN

Cette page a t traduite partir de l'anglais par la communaut. Vous pouvez contribuer en rejoignant la communaut francophone sur MDN Web Docs.

View in English Always switch to English

WebAssembly.Memory()

L'objet WebAssembly.Memory est un ArrayBuffer ou SharedArrayBuffer redimensionnable qui contient des octets bruts de mmoire accessibles par un objet WebAssembly.Instance.

WebAssembly et JavaScript permettent tous deux de crer des objets Memory. Si vous souhaitez accder la mmoire cre en JS depuis WebAssembly, ou inversement, vous pouvez exporter la mmoire du module vers JavaScript ou importer la mmoire de JavaScript vers le module lors de son instanciation.

l'origine, vous ne pouviez effectuer des oprations de mmoire que sur une seule mmoire dans le module Wasm, donc bien que plusieurs objets Memory puissent tre crs, cela n'avait aucun intrt. Les implmentations plus rcentes permettent aux instructions de mmoire de WebAssembly d'oprer sur une mmoire dfinie. Pour plus d'informations, voir Mmoires multiples dans Comprendre le format texte WebAssembly.

Note : La mmoire WebAssembly est toujours au format petit-boutiste, quel que soit la plateforme sur laquelle elle est excute. Par consquent, pour des raisons de portabilit, vous devez lire et crire des valeurs multi-octets en JavaScript en utilisant DataView.

Dans cet article

Constructeur

WebAssembly.Memory()

Cre un nouvel objet Memory.

Proprits d'instance

Memory.prototype.buffer Lecture seule

Retourne le tampon contenu dans la mmoire.

Mthodes d'instance

Memory.prototype.grow()

Augmente la taille de l'instance de mmoire d'un nombre dfini de pages WebAssembly (chacune de 64 KiB). Dtache le buffer prcdent.

Exemples

Crer un nouvel objet Memory

Il existe deux faons d'obtenir un objet WebAssembly.Memory. La premire consiste le construire partir de JavaScript. L'extrait suivant cre une nouvelle instance de mmoire WebAssembly avec une taille initiale de 10 pages (640 KiB) et une taille maximale de 100 pages (6,4 MiB). Sa proprit buffer retourne un ArrayBuffer.

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

L'exemple suivant (voir memory.html (angl.) sur GitHub, et la voir en direct (angl.)) rcupre et instancie le code binaire charg  memory.wasm  en utilisant la fonction WebAssembly.instantiateStreaming(), tout en important la mmoire cre la ligne ci-dessus. Il stocke ensuite des valeurs dans cette mmoire, exporte une fonction, et utilise la fonction exporte pour additionner ces valeurs. Notez l'utilisation de DataView pour accder la mmoire afin d'utiliser toujours le format petit-boutiste.

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

WebAssembly.instantiateStreaming(fetch("memory.wasm"), {
  js: { mem: memory },
}).then((obj) => {
  const summands = new DataView(memory.buffer);
  for (let i = 0; i < 10; i++) {
    summands.setUint32(i * 4, i, true); // WebAssembly est petit boutiste
  }
  const sum = obj.instance.exports.accumulate(0, 10);
  console.log(sum);
});

Une autre faon d'obtenir un objet WebAssembly.Memory est de l'avoir export par un module WebAssembly. Cette mmoire peut tre accde dans la proprit exports de l'instance WebAssembly (aprs que la mmoire ait t exporte dans le module WebAssembly). L'exemple suivant importe une mmoire exporte depuis WebAssembly avec le nom memory, puis affiche le premier lment de la mmoire, interprt comme un Uint32Array.

js
WebAssembly.instantiateStreaming(fetch("memory.wasm")).then((obj) => {
  const values = new DataView(obj.instance.exports.memory.buffer);
  console.log(values.getUint32(0, true));
});

Crer une mmoire partage

Par dfaut, les mmoires WebAssembly ne sont pas partages. Vous pouvez crer une mmoire partage depuis JavaScript en passant shared: true dans l'objet d'initialisation du constructeur :

js
const memory = new WebAssembly.Memory({
  initial: 10,
  maximum: 100,
  shared: true,
});

La proprit buffer de cette mmoire retournera un objet SharedArrayBuffer.

Spcifications

Spcification
WebAssembly JavaScript Interface
# memories
Unknown specification

Compatibilit des navigateurs

webassembly.api.Memory

webassembly.multiMemory

Voir aussi


Web Proxy Viewer  |  New URL  |  Original Page