let warm = 1000; | |
function foo(f) { | |
return f.arguments; | |
} | |
noInline(foo); | |
let caught = 0; | |
function bar() { | |
for (let i = 0; i < warm; ++i) | |
foo(bar); | |
const x = function baz1() { "use strict"; return 42; }; | |
const y = function baz2() { "use strict"; return 0xc0defefe; }; | |
return [x, y]; | |
} | |
bar(); | |
bar(); | |
const [baz1, baz2] = bar(); | |
if (baz1() !== 42) | |
throw new Error(`bad!`); | |
if (baz2() !== 0xc0defefe) | |
throw new Error(`bad!`); | |
try { | |
foo(baz1); | |
} catch (e) { | |
++caught; | |
} | |
try { | |
foo(baz2); | |
} catch (e) { | |
++caught; | |
} | |
if (caught !== 2) | |
throw new Error(`bad!`); |