inline-llint-with-switch.js   [plain text]


function foo(i) {
    switch (i) {
    case 0:
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
    case 7:
    case 8:
    case 9:
        return 42;
    default:
        return "error";
    }
}

function bar(p) {
    if (p)
        return foo(effectful42() - 42);
    else
        return 42;
}

noInline(bar);

function test(p) {
    var result = bar(p);
    if (result != 42)
        throw "Error: bad result: " + result;
}

// Make sure that the call to foo() looks like it has happened.
for (var i = 0; i < 2; ++i)
    test(true);

// Warm up bar and cause inlining, but make sure that foo() doesn't get DFG'd.
for (var i = 0; i < 10000; ++i)
    test(false);

// And finally test the switch statement.
test(true);