| function assert(b) { |
| if (!b) |
| throw new Error("Bad assertion") |
| } |
| noInline(assert); |
| |
| function bar(...rest) { |
| return rest; |
| } |
| |
| function foo(a, b, c) { |
| return bar(a, b, c); |
| } |
| noInline(foo); |
| |
| for (let i = 0; i < 10000; i++) { |
| let result = foo(10, 20, 30); |
| assert(result.length === 3); |
| assert(result[0] === 10); |
| assert(result[1] === 20); |
| assert(result[2] === 30); |
| } |
| |
| function baz(...rest) { |
| return rest; |
| } |
| function jaz(a, b, c) { |
| return baz.apply(null, Array.prototype.slice.call(arguments)); |
| } |
| noInline(jaz); |
| |
| for (let i = 0; i < 50000; i++) { |
| let result = jaz(10, 20, 30); |
| assert(result.length === 3); |
| assert(result[0] === 10); |
| assert(result[1] === 20); |
| assert(result[2] === 30); |
| } |