|
1 |
|
2 /* Handle recompilation on overflow of inc/dec operations. */ |
|
3 |
|
4 function local() |
|
5 { |
|
6 var j = 0x7ffffff0; |
|
7 for (var i = 0; i < 100; i++) |
|
8 j++; |
|
9 assertEq(j, 2147483732); |
|
10 } |
|
11 local(); |
|
12 |
|
13 function olocal() |
|
14 { |
|
15 var j = 0x7ffffff0; |
|
16 for (var i = 0; i < 100; i++) { |
|
17 if (j++ == 5000) |
|
18 break; |
|
19 } |
|
20 assertEq(j, 2147483732); |
|
21 } |
|
22 olocal(); |
|
23 |
|
24 function arg(j) |
|
25 { |
|
26 for (var i = 0; i < 100; i++) |
|
27 j++; |
|
28 assertEq(j, 2147483732); |
|
29 } |
|
30 arg(0x7ffffff0); |
|
31 |
|
32 function oarg(j) |
|
33 { |
|
34 for (var i = 0; i < 100; i++) { |
|
35 if (j++ == 5000) |
|
36 break; |
|
37 } |
|
38 assertEq(j, 2147483732); |
|
39 } |
|
40 oarg(0x7ffffff0); |
|
41 |
|
42 // basic global inc/dec correctness |
|
43 var x = 1.23; |
|
44 x = x--; |
|
45 x = x++; |
|
46 x = ++x; |
|
47 x = --x; |
|
48 assertEq(x, 1.23); |
|
49 |
|
50 var g = 0x7ffffff0; |
|
51 function glob() |
|
52 { |
|
53 for (var i = 0; i < 100; i++) |
|
54 g++; |
|
55 assertEq(g, 2147483732); |
|
56 } |
|
57 glob(); |
|
58 |
|
59 function gname() |
|
60 { |
|
61 n = 0x7ffffff0; |
|
62 for (var i = 0; i < 100; i++) |
|
63 n++; |
|
64 assertEq(n, 2147483732); |
|
65 } |
|
66 gname(); |
|
67 |
|
68 function prop() |
|
69 { |
|
70 var v = {f: 0x7ffffff0}; |
|
71 for (var i = 0; i < 100; i++) |
|
72 v.f++; |
|
73 assertEq(v.f, 2147483732); |
|
74 } |
|
75 prop(); |
|
76 |
|
77 function elem(v, f) |
|
78 { |
|
79 for (var i = 0; i < 100; i++) |
|
80 v[f]++; |
|
81 assertEq(v.f, 2147483732); |
|
82 } |
|
83 elem({f: 0x7ffffff0}, "f"); |
|
84 |
|
85 function name() |
|
86 { |
|
87 var v = 0x7ffffff0; |
|
88 var i; |
|
89 eval("for (i = 0; i < 100; i++) v++"); |
|
90 assertEq(v + 10, 2147483742); |
|
91 } |
|
92 name(); |