function assert(b) {
    if (!b)
        throw new Error("Bad assertion");
}
noInline(assert);
var o = {
    valueOf: function() { return {}; },
    toString: function() { return {}; }
};
function read() {
    return "read";
}
noInline(read);

function bar(a, b) {
    return a == b;
}

function foo(a, b) {
    var result = null;
    var value = read();
    try {
        result = bar(a, b);
    } catch(e) {
        assert("" + value === "read");
    }
    return value;
}
noInline(foo);

for (var i = 0; i < 1000; i++) {
    foo(10, 20);
    foo({}, {});
    foo(10, 10.0);
    foo("hello", "hello");
    foo(null, undefined);
    foo(false, 0);
}
foo(o, "hello");
