function assertEqual(actual, expected) { if (actual != expected) throw "FAILED: expect " + expected + ", actual " + actual; } function test(index1, index2) { function baz(a, b, c, ...args) { return [args.length, args[index1], args[index2]]; } function jaz(...args) { return baz.apply(null, args); } noInline(jaz); function check() { let [length, a, b] = jaz(); assertEqual(length, 0); assertEqual(a, undefined); assertEqual(b, undefined); } for (let i = 0; i < 20000; i++) { check(); } } test(0, 1); test(0x7fffffff, 0);