var foo = [ function(o) { var x = true; o.f.f; if (x) return; throw new Error(); }, function(o) { var x = true; o.f.f; if (!x) throw new Error(); return; }, function(o) { var x = 0; var y = 1; o.f.f; if (x < y) return; throw new Error(); }, function(o) { var x = 1; var y = 0; o.f.f; if (x > y) return; throw new Error(); }, function(o) { var x = 0; var y = 1; o.f.f; if (x <= y) return; throw new Error(); }, function(o) { var x = 1; var y = 0; o.f.f; if (x >= y) return; throw new Error(); }, function(o) { var x = 0; var y = 1; o.f.f; if (x >= y) throw new Error(); return; }, function(o) { var x = 1; var y = 0; o.f.f; if (x <= y) throw new Error(); return; }, function(o) { var x = 0; var y = 1; o.f.f; if (x > y) throw new Error(); return; }, function(o) { var x = 1; var y = 0; o.f.f; if (x < y) throw new Error(); return; }, function(o) { var x = 42; o.f.f; if (x == 42) return; throw new Error(); }, function(o) { var x = 42; o.f.f; if (x != 42) throw new Error(); return; }, function(o) { var x = 42; o.f.f; if (x === 42) return; throw new Error(); }, function(o) { var x = 42; o.f.f; if (x !== 42) throw new Error(); return; }, ]; for (var i = 0; i < foo.length; ++i) noInline(foo[i]); function test(o) { var failed = []; for (var i = 0; i < foo.length; ++i) { try { foo[i](o); } catch (e) { failed.push("Failed " + foo[i] + " with " + e); } } if (failed.length) throw failed; } var object = {f:{f:42}}; for (var i = 0; i < 10000; ++i) { test(object); } test({f:{g:43}});