drop: Wasm elem-Anweisung
Die elem.drop-elem-Anweisung verwirft die Daten, die durch ein passives elem-Segment enthalten sind, und gibt den Speicher frei, nachdem sie in einem table.init verwendet wurden.
Hinweis:
Aktive elem-Segmente werden während der Modulinistanzierung automatisch verworfen und können daher nicht über elem.drop verworfen werden.
Probieren Sie es aus
(module
(table $return_values 2 funcref)
(func $f1 (result i32)
i32.const 42
)
(func $f2 (result i32)
i32.const 100
)
(elem $funcs funcref (ref.func $f1) (ref.func $f2))
(func (export "init")
i32.const 0 ;; destination table index
i32.const 0 ;; offset into elem segment
i32.const 2 ;; number of elements to copy
table.init $funcs
;; segment data no longer needed
elem.drop $funcs
)
(func (export "accessTable") (param $index i32) (result i32)
local.get $index
call_indirect (result i32)
)
)
WebAssembly.instantiateStreaming(fetch("{%wasm-url%}")).then((result) => {
result.instance.exports.init();
const value = result.instance.exports.accessTable(1);
console.log(value);
});
Im obigen Beispiel definieren wir eine table, zwei Funktionen und ein elem namens $funcs, das die beiden Funktionen referenziert. Wir rufen dann table.init auf, um die Referenzen aus dem $funcs-elem in die table zu kopieren. Nachdem dies erledigt ist, wird das elem nicht mehr benötigt, daher rufen wir elem.drop auf, um den von ihm belegten Speicher freizugeben.
Syntax
elem.drop identifier
elem.drop-
Der
elem.drop-Anweisungstyp. Muss immer zuerst enthalten sein. identifier-
Der Bezeichner für das
elem, das Sie verwerfen möchten. Dies kann eines der folgenden sein:name-
Ein Bezeichnername für das
elemfestgelegt, als es zuerst definiert wurde. Dieser muss mit einem$-Symbol beginnen, zum Beispiel$my_elem. index-
Die Indexnummer des
elem, zum Beispiel0für das ersteelemim Wasm-Modul,1für das zweite usw.
Typ
[] -> []
Binäre Kodierung
| Anweisung | Binärformat | Beispieltext => Binär |
|---|---|---|
elem.drop |
0xfc 13:u32 x:elemidx |
elem.drop 0 => 0xfc 0x0d 0x00 |
Spezifikationen
| Spezifikation |
|---|
| WebAssembly Core Specification> # -hrefsyntax-instr-tablemathsfelemdropx%E2%91%A0> |
Browser-Kompatibilität
Siehe auch
- Definition von
table - Definition von
elem - WebAssembly-Tabellenanweisungen