Imported Upstream version 1.0.0
[platform/upstream/js.git] / js / src / jit-test / tests / basic / testArrayInWithIndexedProto.js
1 function testArrayInWithIndexedProto()
2 {
3     Array.prototype[0] = "Got me";
4     var zeroPresent, zeroPresent2;
5     // Need to go to 2*RUNLOOP because in the failure mode this is
6     // testing we have various side-exits in there due to interp and
7     // tracer not agreeing that confuse the issue and cause us to not
8     // hit the bad case within RUNLOOP iterations.
9     for (var j = 0; j < 2*RUNLOOP; ++j) {
10         zeroPresent = 0 in [];
11     }
12
13     var arr = [1, 2];
14     delete arr[0];
15     for (var j = 0; j < 2*RUNLOOP; ++j) {
16         zeroPresent2 = 0 in arr;
17     }
18     return [zeroPresent, zeroPresent2];
19 }
20
21 var [ret, ret2] = testArrayInWithIndexedProto();
22 assertEq(ret, true);
23 assertEq(ret2, true);
24
25 checkStats({
26     traceCompleted: 0,
27     traceTriggered: 0,
28     sideExitIntoInterpreter: 0,
29     recorderStarted: 2,
30     recorderAborted: 2
31 });