зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1871951: Add regression test for stackmap issue. r=jseward
Depends on D198856 Differential Revision: https://phabricator.services.mozilla.com/D198857
This commit is contained in:
Родитель
ff7e417422
Коммит
ee77b17ff8
|
@ -0,0 +1,75 @@
|
|||
// |jit-test| skip-variant-if: --wasm-test-serialization, true; skip-if: !wasmGcEnabled()
|
||||
|
||||
gczeal(18)
|
||||
function a(str, imports) {
|
||||
b = wasmTextToBinary(str)
|
||||
try {
|
||||
c = new WebAssembly.Module(b)
|
||||
} catch {}
|
||||
return new WebAssembly.Instance(c, imports)
|
||||
}
|
||||
gczeal(10)
|
||||
base = a(`(module
|
||||
(global (export "rngState")
|
||||
(mut i32) i32.const 1
|
||||
)
|
||||
(global $ttl (mut i32) (i32.const 100000))
|
||||
|
||||
(type $d (array (mut i32)))
|
||||
(type $e (array (mut (ref null $d))))
|
||||
|
||||
(func $f
|
||||
(param $arr (ref $d))
|
||||
(result (ref $d))
|
||||
|
||||
(global.set $ttl (i32.sub (global.get $ttl) (i32.const 1)))
|
||||
(if (i32.eqz (global.get $ttl))
|
||||
(then
|
||||
unreachable
|
||||
)
|
||||
)
|
||||
|
||||
local.get $arr
|
||||
)
|
||||
(func $createSecondaryArray (result (ref $d))
|
||||
(return_call $f
|
||||
(array.new $d (i32.const 0) (i32.const 1))
|
||||
)
|
||||
)
|
||||
(func $g (export "createPrimaryArrayLoop")
|
||||
(param i32) (param $arrarr (ref $e))
|
||||
(result (ref $e))
|
||||
|
||||
(call $createSecondaryArray (local.get $arrarr))
|
||||
(return_call $g
|
||||
(i32.const 1)
|
||||
local.get $arrarr
|
||||
)
|
||||
)
|
||||
)`)
|
||||
t58 = `(module
|
||||
(type $d (array (mut i32)))
|
||||
(type $e (array (mut (ref null $d))))
|
||||
|
||||
(import "" "rngState" (global $h (mut i32)))
|
||||
(import "" "createPrimaryArrayLoop" (func $g (param i32 (ref $e)) (result (ref $e))))
|
||||
|
||||
(func $createPrimaryArray (result (ref $e))
|
||||
(return_call $g
|
||||
i32.const 0
|
||||
(array.new $e (ref.null $d) (i32.const 500))
|
||||
)
|
||||
)
|
||||
(func (export "churn") (result i32)
|
||||
(local $arrarr (ref $e))
|
||||
(local.set $arrarr (call $createPrimaryArray))
|
||||
|
||||
(global.get $h)
|
||||
)
|
||||
)`
|
||||
j = a(t58, {"": base.exports})
|
||||
fns = j.exports;
|
||||
|
||||
assertErrorMessage(() => {
|
||||
fns.churn();
|
||||
}, WebAssembly.RuntimeError, /unreachable executed/);
|
Загрузка…
Ссылка в новой задаче