| /*** |
| * There was a bug on 32-bit builds where === with objects would not check the tag |
| * when determining equality via pointer comparison. |
| */ |
| |
| "use strict"; |
| |
| function Foo() {} |
| |
| function checkStrictEq(a, b) { |
| return a === b; |
| } |
| noInline(checkStrictEq); |
| |
| function checkStrictEqOther(a, b) { |
| return a === b; |
| } |
| noInline(checkStrictEqOther); |
| |
| var foo = new Foo(); |
| var address = addressOf(foo); |
| |
| if (address === undefined) |
| throw "Error: address should not be undefined"; |
| |
| if (foo === address || address === foo) |
| throw "Error: an address should not be equal to it's object"; |
| |
| for (var i = 0; i < 10000000; i++) { |
| if (checkStrictEq(foo, address)) |
| throw "Error: an address should not be equal to it's object"; |
| if (checkStrictEqOther(address,foo)) |
| throw "Error: an address should not be equal to it's object"; |
| } |