function shouldBe(actual, expected) { if (actual !== expected) throw new Error('bad value: ' + actual); } function equal(a, b) { return a == b; } noInline(equal); function strictEqual(a, b) { return a === b; } noInline(strictEqual); var s1 = Symbol() var s2 = Symbol(); var list = [ [ [ s1, s1 ], true ], [ [ s2, s1 ], false ], [ [ s1, s2 ], false ], [ [ s2, s2 ], true ], [ [ s2, 42 ], false ], ]; list.forEach(function (set) { var pair = set[0]; var result = set[1]; for (var i = 0; i < 10000; ++i) { shouldBe(equal(pair[0], pair[1]), result); shouldBe(strictEqual(pair[0], pair[1]), result); } });