var doMasquerading = false; function bar(o) { if (doMasquerading) return makeMasquerader(); return o; } noInline(bar); function foo(o) { o = bar(o); return typeof o === "undefined"; } noInline(foo); function test(o, expected) { var result = foo(o); if (result != expected) throw new Error("bad result: " + result); } for (var i = 0; i < 10000; ++i) { test(void 0, true); test(null, false); test(42, false); test({}, false); test("undefined", false); } doMasquerading = true; test({}, true);