function create() { return Object.create(arguments, {2: {value: "shadowed"}}); } function createStrict() { "use strict"; return Object.create(arguments, {40: {value: "shadowed2"}}); } function f() { var args = [createStrict(10, 20, 30, 40), create(1, 2, 3)]; var threshold = getJitCompilerOptions()["ion.warmup.trigger"] + 101; for (var i = 0; i < threshold; i++) { // We switch between different arguments objects, to make // sure the right IC is triggered. var a = args[i % 2]; assertEq(a.length, (i % 2) ? 3 : 4); assertEq(a[0], (i % 2) ? 1 : 10); assertEq(a[1], (i % 2) ? 2 : 20); assertEq(a[2], (i % 2) ? "shadowed" : 30); assertEq(a[3], (i % 2) ? undefined : 40); } } f();