drop: Wasm Datensatzanweisung
Die data.drop Datensatzanweisung verwirft die Daten, die von einer passiven data-Definition enthalten sind, und gibt deren Speicher frei, nachdem sie in einer memory.init verwendet wurden.
Hinweis:
Aktive Datensegmente werden automatisch während der Modulinstanziierung verworfen und können daher nicht über data.drop verworfen werden.
Probieren Sie es aus
(module
(memory (export "memory") 1)
(data $greeting "Hello")
(func (export "init")
i32.const 0 ;; destination offset in memory
i32.const 0 ;; offset into the data segment
i32.const 5 ;; number of bytes to copy
memory.init $greeting
data.drop $greeting
)
)
WebAssembly.instantiateStreaming(fetch("{%wasm-url%}")).then((result) => {
result.instance.exports.init();
const memBuffer = result.instance.exports.memory.buffer;
const memArray = new Uint8Array(memBuffer, 0, 5);
console.log(new TextDecoder().decode(memArray));
});
Im obigen Beispiel definieren wir einen memory und ein data namens $greeting, das die Zeichenfolge Hello enthält. Wir rufen dann memory.init auf, um die Zeichenfolge in den memory zu kopieren. Nachdem dies erledigt ist, werden die data nicht mehr benötigt, sodass wir data.drop aufrufen, um den genutzten Speicher freizugeben.
Syntax
data.drop identifier
data.drop-
Der
data.drop-Anweisungstyp. Muss immer zuerst angegeben werden. identifier-
Der Bezeichner für die
data, die Sie löschen möchten. Dies kann eines der folgenden sein:name-
Ein identifizierender Name für die
datafestgelegt, als es zuerst definiert wurde. Dies muss mit einem$-Symbol beginnen, zum Beispiel$my_data. index-
Die Indexnummer der
data, zum Beispiel0für die erstedataim Wasm-Modul,1für die zweite usw.
Typ
[] -> []
Binärcodierung
| Anweisung | Binärformat | Beispielttext => binär |
|---|---|---|
data.drop |
0xfc 9:u32 x:dataidx |
data.drop 0 => 0xfc 0x09 0x00 |
Spezifikationen
| Spezifikation |
|---|
| WebAssembly Core Specification> # -hrefsyntax-instr-memorymathsfdatadropx%E2%91%A0> |
Browser-Kompatibilität
Siehe auch
memoryDefinitiondataDefinition- WebAssembly Speicheranweisungen