diff options
Diffstat (limited to 'js/src/jit-test/tests/wasm/regress/bug1856733.js')
-rw-r--r-- | js/src/jit-test/tests/wasm/regress/bug1856733.js | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/wasm/regress/bug1856733.js b/js/src/jit-test/tests/wasm/regress/bug1856733.js new file mode 100644 index 0000000000..0f3e59dcfe --- /dev/null +++ b/js/src/jit-test/tests/wasm/regress/bug1856733.js @@ -0,0 +1,45 @@ +// |jit-test| --wasm-gc; skip-if: !wasmGcEnabled() + +// Validates if imported globals are accounted for in init expressions. + +var ins = wasmEvalText(`(module + (import "" "d" (global $g0 i32)) + (global $g i32 (i32.const 1)) + (global $g2 (mut i32) (global.get $g)) + (global $g3 (mut i32) (global.get $g0)) + (func (export "test1") (result i32) global.get $g2) + (func (export "test2") (result i32) global.get $g3) +)`, {"": {d: 2},}); +assertEq(ins.exports.test1(), 1); +assertEq(ins.exports.test2(), 2); + +wasmFailValidateText(`(module + (import "" "d" (global $g0 (mut i32))) + (global $g (mut i32) (global.get $g0)) +)`, /must reference a global immutable import/); + +wasmFailValidateText(`(module + (import "" "d" (global $g0 i32)) + (global $g i32 (global.get $g)) +)`, /global\.get index out of range/); + +// Other tests from the bug. + +wasmValidateText(`(module + (import "xx" "d" (global $g0 i32)) + (global $int i32 (i32.const 251)) + (global $tbl2 (ref i31) (ref.i31 + (global.get $int) + )) +)`); +wasmValidateText(`(module + (import "xx" "d" (global $g0 i32)) + (type $block (array (ref eq))) + (global $len i32 (i32.const 256)) + (global $tbl (ref $block) (array.new $block + (ref.i31 + (i32.const 0) + ) + (global.get $len) + )) +)`); |