Imported Upstream version 1.0.0
[platform/upstream/js.git] / js / src / jit-test / tests / basic / testArrayIn.js
1 // Give us enough room to work with some holes too
2 const array_size = RUNLOOP + 20;
3
4 function testArrayIn()
5 {
6     var arr = new Array(array_size);
7     var i;
8     for (i = 0; i < array_size; ++i) {
9         arr[i] = i;
10     }
11
12     // Sanity check here
13     checkStats({
14         traceCompleted: 1,
15         traceTriggered: 1,
16         sideExitIntoInterpreter: 1
17     });
18     
19     delete arr[RUNLOOP + 5];
20     delete arr[RUNLOOP + 10];
21
22     var ret = [];
23     for (i = 0; i < array_size; ++i) {
24         ret.push(i in arr);
25     }
26
27     checkStats({
28         traceCompleted: 2,
29         traceTriggered: 2,
30         sideExitIntoInterpreter: 2
31     });
32
33     
34     var ret2;
35     for (i = 0; i < RUNLOOP; ++i) {
36         ret2 = array_size in arr;
37     }
38
39     checkStats({
40         traceCompleted: 3,
41         traceTriggered: 3,
42         sideExitIntoInterpreter: 3
43     });
44
45     return [ret, ret2];
46 }
47
48 var [ret, ret2] = testArrayIn();
49
50 assertEq(ret2, false);
51
52 for (var i = 0; i < array_size; ++i) {
53     assertEq(ret[i], i != RUNLOOP + 5 && i != RUNLOOP + 10);
54 }