function assert(b) { if (!b) throw new Error("Bad assertion") } noInline(assert); function foo(a, ...args) { let r = [...a, ...args]; return r; } noInline(foo); function escape(a) { return a; } noInline(escape); function bar(a, ...args) { escape(args); let r = [...a, ...args]; return r; } noInline(foo); for (let i = 0; i < 50000; i++) { for (let f of [foo, bar]) { let o = {}; let a = [o, 20]; let r = f(a, 30, 40); assert(r.length === 4); assert(r[0] === o); assert(r[1] === 20); assert(r[2] === 30); assert(r[3] === 40); } }