michael@0: function g1(x, y) { michael@0: return 0 & y; michael@0: } michael@0: var c1 = 0; michael@0: function f1() { michael@0: for (var i=0; i<100; i++) { michael@0: g1(i, i); michael@0: g1(i, {valueOf: function() { c1++; return 0; }}); michael@0: } michael@0: } michael@0: f1(); michael@0: assertEq(c1, 100); michael@0: michael@0: function g2(x, y) { michael@0: ~y; michael@0: } michael@0: var c2 = 0; michael@0: function f2() { michael@0: for (var i=0; i<100; i++) { michael@0: g2(i, i); michael@0: g2(i, {valueOf: function() { c2++; return 0; }}); michael@0: } michael@0: } michael@0: f2(); michael@0: assertEq(c2, 100); michael@0: michael@0: function g3(x, y) { michael@0: return 0 >>> y; michael@0: } michael@0: var c3 = 0; michael@0: function f3() { michael@0: for (var i=0; i<100; i++) { michael@0: g3(i, i); michael@0: g3(i, {valueOf: function() { c3++; return 0; }}); michael@0: } michael@0: } michael@0: f3(); michael@0: assertEq(c3, 100);