instanceof.js   [plain text]


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 < 10000; ++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);
}