function foo(o, prototype) {
    return o instanceof prototype;
}

noInline(foo);

function test(o, prototype, expected) {
    var actual = foo(o, prototype);
    if (actual != expected)
        throw new Error("bad result: " + actual);
}

function Foo() { }

function Bar() { }
Bar.prototype = new Foo();

for (var i = 0; i < testLoopCount; ++i) {
    test({}, Object, true);
    test({}, Array, false);
    test({}, String, false);
    test({}, Foo, false);
    test({}, Bar, false);
    test([], Object, true);
    test([], Array, true);
    test([], String, false);
    test([], Foo, false);
    test([], Bar, false);
    test(new Foo(), Object, true);
    test(new Foo(), Array, false);
    test(new Foo(), String, false);
    test(new Foo(), Foo, true);
    test(new Foo(), Bar, false);
    test(new Bar(), Object, true);
    test(new Bar(), Array, false);
    test(new Bar(), String, false);
    test(new Bar(), Foo, true);
    test(new Bar(), Bar, true);
}
