Source code

Revision control

Copy as Markdown

Other Tools

// |jit-test| skip-if: !wasmGcEnabled()
const INSTRUCTIONS = [
"struct.new $s",
"struct.new_default $s",
"struct.get $s 0",
"struct.get_s $s 1",
"struct.get_u $s 1",
"struct.set $s 0",
"array.new $a_unpacked",
"array.new_fixed $a_unpacked 2",
"array.new_default $a_unpacked",
"array.new_data $a_data 0",
"array.new_elem $a_elem 0",
"array.get $a_unpacked",
"array.get_s $a_packed",
"array.get_u $a_packed",
"array.set $a_unpacked",
"array.copy $a_unpacked $a_unpacked",
"array.len",
"ref.i31",
"i31.get_s",
"i31.get_u",
"ref.test structref",
"ref.test (ref $s)",
"ref.test nullref",
"ref.test (ref $f)",
"ref.test nullfuncref",
"ref.test externref",
"ref.test nullexternref",
"ref.cast structref",
"ref.cast (ref $s)",
"ref.cast nullref",
"ref.cast (ref $f)",
"ref.cast nullfuncref",
"ref.cast externref",
"ref.cast nullexternref",
"br_on_cast 0 anyref (ref $s)",
"br_on_cast_fail 0 anyref (ref $s)",
"any.convert_extern",
"extern.convert_any",
];
for (let instruction of INSTRUCTIONS) {
print(instruction);
wasmEvalText(`(module
(type $f (func))
(type $s (struct (field (mut i32)) (field (mut i8))))
(type $a_unpacked (array (mut i32)))
(type $a_packed (array (mut i8)))
(type $a_data (array (mut i32)))
(type $a_elem (array (mut anyref)))
(data "")
(elem anyref)
(func (result anyref)
unreachable
${instruction}
unreachable
)
)`);
}