description(
"Tests that a dead use of Math.min(a,b) at least speculates that its arguments are indeed numbers."
);

function foo(a, b) {
    Math.min(a.f, b.f);
    return 100;
}

function bar(a, b) {
    Math.min(a.f, b.f);
    return 100;
}

var x = {f:42};
var y = {f:43};
var ok = null;
var expected = 42;
var empty = "";

silentTestPass = true;
noInline(foo);
noInline(bar);

for (var i = 0; i < 200; i = dfgIncrement({f:foo, i: i + 1, n: 100})) {
    if (i == 150) {
        x = {f:{valueOf:function(){ ok = i; return 37; }}};
        expected = 37;
    }
    var result = eval(empty + "foo(x, y)");
    if (i >= 150)
        shouldBe("ok", "" + i);
    shouldBe("result", "100");
}

x = {f:42};
y = {f:43};
ok = null;
expected = 42;

for (var i = 0; i < 200; i = dfgIncrement({f:bar, i:i + 1, n:100})) {
    if (i == 150) {
        y = {f:{valueOf:function(){ ok = i; return 37; }}};
        expected = 37;
    }
    var result = eval(empty + "bar(x, y)");
    if (i >= 150)
        shouldBe("ok", "" + i);
    shouldBe("result", "100");
}

