Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
1 function testInt32() {
2 function f(arr, i) {
3 arr[0] = 1;
4 arr[1] = arr[0] + 1;
5 arr[2] = arr[1] + arr[0];
6 var x = arr[2]; // 3
7 arr[x] = arr[x-1] + 1;
8 arr[x+1] = arr[x] + i;
9 return arr[4];
10 }
11 var a = [1, 2, 3, 4, 5, 6, 7, 8];
12 for (var i=0; i<70; i++) {
13 assertEq(f(a, i), i + 4);
14 }
15 }
16 testInt32();
18 function testDouble() {
19 function f(arr, d) {
20 arr[0] = d;
21 for (var i=1; i<8; i++) {
22 arr[i] = arr[i-1] + d;
23 }
24 return arr[7];
25 }
26 var a = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0];
27 for (var i=0; i<50; i++) {
28 assertEq(f(a, Math.PI + i)|0, ((Math.PI + i) * 8)|0);
29 }
30 }
31 testDouble();
33 function testOutOfBounds() {
34 function f(arr, i, v) {
35 arr[i] = v;
36 }
37 var a = [1, 2];
38 for (var i=0; i<90; i++) {
39 f(a, 1, i);
40 }
41 assertEq(a[1], 89);
43 f(a, 2, 40);
44 f(a, 100, 50);
45 f(a, -1, 3);
47 assertEq(a[2], 40);
48 assertEq(a[100], 50);
49 assertEq(a[-1], 3);
50 }
51 testOutOfBounds();
53 function testClassGuard() {
54 function f(arr, v) {
55 arr[1] = v;
56 }
57 var a = [1, 2, 3, 4];
58 for (var i=0; i<90; i++) {
59 f(a, i);
60 }
61 assertEq(a[1], 89);
63 var b = {};
64 f(b, 100);
65 assertEq(b[1], 100);
66 }
67 testClassGuard();
69 function testMultipleTypes() {
70 function f(arr, v) {
71 arr[1] = v;
72 }
73 var a = [1, 2, 3, 4];
74 var b = [1.1, -233.2, 3.3];
76 for (var i=0; i<90; i++) {
77 f(a, i);
78 }
79 assertEq(a[1], 89);
80 f(b, 20);
81 assertEq(b[1], 20);
82 }
83 testMultipleTypes();
85 function testNull() {
86 function f(arr) {
87 arr[0] = null;
88 }
90 var arr = [undefined];
91 for (var i=0; i<100; i++) {
92 f(arr);
93 }
94 assertEq(arr[0], null);
95 }
96 testNull();
98 // Bug 722245.
99 function testConstantGcThing() {
100 function f(arr, x) {
101 arr[x] = "abc";
102 }
103 var arr = ["", ""];
104 for (var i=0; i<100; i++) {
105 f(arr, 1);
106 }
107 assertEq(arr[1], "abc");
108 }
109 testConstantGcThing();