blob: be56a3405f43d4aabee00433aeb99f5f00c89d3e [file] [log] [blame]
//-------------------------------------------------------------------------------------------------------
// Copyright (C) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
//-------------------------------------------------------------------------------------------------------
// Find StackOverflow constructor
let StackOverflow;
try {
const bar = () => bar();
bar();
} catch (e) {
StackOverflow = e.constructor;
}
function test(n) {
const str = `function asm() {
"use asm"
function foo() {
return (${Array(n).fill("1").join("+")})|0
}
return foo;
}
`;
try {
eval(str);
const res = asm()();
if (res !== n) {
console.log(`Invalid result: expected ${n}. Got ${res}`);
}
} catch (e) {
if (!(e instanceof StackOverflow)) {
console.log("Expected a StackOverflow error");
}
}
}
// Test with/without stackoverflow in asm.js and/or javascript
for (const n of [10, 50, 100, 500, 1000, 5000]) {
test(n);
}
console.log("pass");