//@ runFTLNoCJIT
var o1 = {
    i: 0,
    valueOf: function() { return this.i; }
};

result = 0;
function foo(a, b) {
    var result = 0;
    for (var j = 0; j < 10; j++) {
        var temp;
        if (a > b)
            temp = a >>> b;
        else
            temp = b >>> 1;
        result += temp;
    }

    // Busy work just to allow the DFG and FTL to optimize this out. If the above causes
    // us to speculation fail out to the baseline, this busy work will take a lot longer
    // to run.
    // This loop below also gets the DFG to compile this function sooner.
    var origResult = result;
    for (var i = 1; i < 1000; i++)
        result = result >>> i;
    result = origResult > result ? origResult : result;
    return result;
}
noInline(foo);

var iterations;
var expectedResult;
if (this.window) {
    // The layout test doesn't like too many iterations and may time out.
    iterations = 10000;
    expectedResult = 439840;
} else {
    iterations = 100000;
    expectedResult = 48330800;
}


for (var i = 0; i <= iterations; i++) {
    o1.i = i;
    if (i % 2)
        result += foo(o1, 10);
    else
        result += foo(i, 10);
}

if (result != expectedResult)
    throw "Bad result: " + result;
