38 lines
1.0 KiB
JavaScript
38 lines
1.0 KiB
JavaScript
//@ skip if $model == "Apple Watch Series 3" # added by mark-jsc-stress-test.py
|
|
//@ runNoFTL
|
|
|
|
// Regression test for https://bugs.webkit.org/show_bug.cgi?id=153431.
|
|
// Reduced version based on the reproduction case provided by Ryan Sturgell in the bug,
|
|
// with some variable renames to read slightly better.
|
|
|
|
function assert(testedValue) {
|
|
if (!testedValue)
|
|
throw Error("Failed assertion");
|
|
}
|
|
|
|
function badFunc(arr, operand, resultArr) {
|
|
// This re-use of variable "operand" is important - rename it and the bug goes away.
|
|
operand = arr[operand];
|
|
if (false) {
|
|
// If this unreachable block is removed, the bug goes away!!
|
|
} else
|
|
{
|
|
resultArr[0] = operand;
|
|
}
|
|
}
|
|
noInline(badFunc);
|
|
|
|
function run() {
|
|
for (var i = 0; i < 10000; i++) {
|
|
var arr = new Uint32Array([0x80000000,1]); // Needs to be an Uint32Array.
|
|
var resultArr = [];
|
|
|
|
badFunc(arr, 0, resultArr);
|
|
assert(resultArr[0] == arr[0]);
|
|
badFunc(arr, 1, resultArr);
|
|
assert(resultArr[0] == arr[1]);
|
|
}
|
|
}
|
|
|
|
run();
|