| 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!`); |