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

Constructeur 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

Constructeur WebAssembly.Memory()

Baseline Large disponibilit

Cette fonctionnalit est bien tablie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis octobre 2017.

Le constructeur WebAssembly.Memory() permet de crer un nouvel objet Memory dont la proprit buffer est un tableau tampon ArrayBuffer redimensionnable ou un SharedArrayBuffer contenant les octets bruts de mmoire laquelle accde une Instance WebAssembly.

Une mmoire cre par du code JavaScript ou WebAssembly sera accessible et modifiable depuis JavaScript ou WebAssembly.

Dans cet article

Syntaxe

js
new WebAssembly.Memory(descripteurMemoire);

Paramtres

descripteurMemoire

Un objet contenant les proprits suivantes :

initial

La taille initiale de la mmoire WebAssembly Memory, exprime en nombre de pages WebAssembly.

maximum Facultatif

La taille maximale que peut atteindre la mmoire WebAssembly, exprime en nombre de pages WebAssembly. Lorsque ce paramtre est prsent, il peut tre utilis comme indication par le moteur afin de rserver la mmoire d'avance. Toutefois, le moteur pourra ignorer cette rservation ou l'effectuer avec une taille moindre. Les mmoires WebAssembly qui ne sont pas partages n'ont pas besoin de dfinir une proprit maximum, en revanche, c'est une proprit ncessaire pour les mmoires partages.

shared Facultatif

Une valeur boolenne qui dfinit si la mmoire est partage ou non. Si elle vaut true, il s'agira d'une mmoire partage. La valeur par dfaut est false.

Note : Une page WebAssembly mesure une taille constante de 65 536 octets, soit 64Ko.

Exceptions

  • Si descripteurMemoire n'est pas un objet, une exception TypeError sera leve.
  • Si maximum est indiqu et est infrieur initial, une exception RangeError sera leve.

Exemples

Crer une nouvelle instance Memory

Il existe deux faons d'obtenir un objet WebAssembly.Memory. La premire consiste la construire depuis du code JavaScript. Dans l'exemple qui suit, on cre une nouvelle instance d'un objet Memory WebAssembly avec une taille initiale de 10 pages (640Ko) et une taille maximale de 100 pages (6,4Mo). Sa proprit buffer renverra un objet ArrayBuffer.

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

La deuxime mthode pour obtenir un objet WebAssembly.Memory consiste l'exporter depuis un module WebAssembly. Dans l'exemple suivant (voir memory.html sur GitHub pour le code source, ainsi que la dmonstration correspondante), on rcupre et on instancie le bytecode charg memory.wasm avec la mthode WebAssembly.instantiateStreaming() tout en important la mmoire cre la ligne prcdente. On stocke ensuite certaines valeurs dans cette mmoire et on exporte une fonction qu'on utilise pour additionner certaines des valeurs.

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);
});

Crer une mmoire partage

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

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

La proprit buffer de l'objet mmoire correspondant renverra alors un objet SharedArrayBuffer.

Spcifications

Spcification
WebAssembly JavaScript Interface
# dom-memory-memory

Compatibilit des navigateurs

Voir aussi


Web Proxy Viewer  |  New URL  |  Original Page