summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/arguments/arguments-on-proto.js
blob: 745c77b9dacbf51c2a246af2e3f3d06aeefc4ef9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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();