drop: Wasm elem instruction
The elem.drop elem instruction discards the data contained by a passive elem segment, freeing up its memory, after being used in a table.init.
Note:
Active elem segments are dropped automatically during module instantiation, and therefore are not available to drop via elem.drop.
Try it
(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);
});
In the above example, we define a table, two functions, and an elem called $funcs that references the two functions. We then invoke table.init to copy the references from the $funcs elem over to the table. With this done, the elem is no longer needed, so we call elem.drop to free up the memory it was using.
Syntax
elem.drop identifier
elem.drop-
The
elem.dropinstruction type. Must always be included first. identifier-
The identifier for the
elemyou want to drop. This can be one of the following:name-
An identifying name set for the
elemwhen it was first defined. This must begin with a$symbol, for example$my_elem. index-
The elem's index number, for example
0for the first elem in the wasm module,1for the second, etc.
Type
[] -> []
Binary encoding
| Instruction | Binary format | Example text => binary |
|---|---|---|
elem.drop |
0xfc 13:u32 x:elemidx |
elem.drop 0 => 0xfc 0x0d 0x00 |
Specifications
| Specification |
|---|
| WebAssembly Core Specification> # -hrefsyntax-instr-tablemathsfelemdropx%E2%91%A0> |
Browser compatibility
See also
tabledefinitionelemdefinition- WebAssembly table instructions