michael@0: michael@0: /* Handle recompilation on overflow of inc/dec operations. */ michael@0: michael@0: function local() michael@0: { michael@0: var j = 0x7ffffff0; michael@0: for (var i = 0; i < 100; i++) michael@0: j++; michael@0: assertEq(j, 2147483732); michael@0: } michael@0: local(); michael@0: michael@0: function olocal() michael@0: { michael@0: var j = 0x7ffffff0; michael@0: for (var i = 0; i < 100; i++) { michael@0: if (j++ == 5000) michael@0: break; michael@0: } michael@0: assertEq(j, 2147483732); michael@0: } michael@0: olocal(); michael@0: michael@0: function arg(j) michael@0: { michael@0: for (var i = 0; i < 100; i++) michael@0: j++; michael@0: assertEq(j, 2147483732); michael@0: } michael@0: arg(0x7ffffff0); michael@0: michael@0: function oarg(j) michael@0: { michael@0: for (var i = 0; i < 100; i++) { michael@0: if (j++ == 5000) michael@0: break; michael@0: } michael@0: assertEq(j, 2147483732); michael@0: } michael@0: oarg(0x7ffffff0); michael@0: michael@0: // basic global inc/dec correctness michael@0: var x = 1.23; michael@0: x = x--; michael@0: x = x++; michael@0: x = ++x; michael@0: x = --x; michael@0: assertEq(x, 1.23); michael@0: michael@0: var g = 0x7ffffff0; michael@0: function glob() michael@0: { michael@0: for (var i = 0; i < 100; i++) michael@0: g++; michael@0: assertEq(g, 2147483732); michael@0: } michael@0: glob(); michael@0: michael@0: function gname() michael@0: { michael@0: n = 0x7ffffff0; michael@0: for (var i = 0; i < 100; i++) michael@0: n++; michael@0: assertEq(n, 2147483732); michael@0: } michael@0: gname(); michael@0: michael@0: function prop() michael@0: { michael@0: var v = {f: 0x7ffffff0}; michael@0: for (var i = 0; i < 100; i++) michael@0: v.f++; michael@0: assertEq(v.f, 2147483732); michael@0: } michael@0: prop(); michael@0: michael@0: function elem(v, f) michael@0: { michael@0: for (var i = 0; i < 100; i++) michael@0: v[f]++; michael@0: assertEq(v.f, 2147483732); michael@0: } michael@0: elem({f: 0x7ffffff0}, "f"); michael@0: michael@0: function name() michael@0: { michael@0: var v = 0x7ffffff0; michael@0: var i; michael@0: eval("for (i = 0; i < 100; i++) v++"); michael@0: assertEq(v + 10, 2147483742); michael@0: } michael@0: name();