michael@0: var g; michael@0: function test(a, b) { michael@0: michael@0: g = 0; michael@0: for(var i=0; i<100; i++) { michael@0: g += i michael@0: } michael@0: michael@0: var t = a*b; michael@0: michael@0: for(var i=0; i<100; i++) { michael@0: t = x.y + t; michael@0: return t; michael@0: } michael@0: michael@0: } michael@0: michael@0: function negzero(x) { michael@0: return x===0 && (1/x)===-Infinity; michael@0: } michael@0: michael@0: michael@0: var x = {y:0}; michael@0: var a = 0; michael@0: var b = 0; michael@0: for(var i=0; i<58; i++) { michael@0: var o = test(a, b); michael@0: michael@0: // Test returns michael@0: // * 0, if i < 50 michael@0: // * -0, if i >= 50 michael@0: assertEq(negzero(o), i>50); michael@0: michael@0: if (i == 50) { michael@0: a = -1 michael@0: x.y = -0 michael@0: } michael@0: }