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); }