1 // test dense -> slow array transitions during the recording and on trace
2 // for various array functions and property accessors
4 function test_set_elem() {
8 for (var i = 0; i != 100; ++i) {
14 for (var i = 0; i != 100; ++i) {
24 for (var i = 0; i != 100; ++i) {
26 assertEq(a.length, 100 * 100 + 1);
27 assertEq(a[100*100], i);
29 assertEq(1 + i in a, false);
32 for (var i = 0; i != 100; ++i) {
34 assertEq(a.length, 200 + i + 1);
35 assertEq(a[200 + i], i);
37 assertEq(1 + i in a, false);
41 function test_reverse() {
43 function prepare_arays() {
46 for (var i = 0; i != 50; ++i) {
47 var a = [1, 2, 3, 4, 5];
48 a.length = i + base_index;
55 for (var i = 0; i != bag.length; ++i) {
62 var bag = prepare_arays();
64 for (var i = 0; i != bag.length; ++i) {
67 for (var j = 1; j <= 5; ++j) {
68 assertEq(a[a.length - j], j);
70 for (var j = 1; j < a.length - 5; ++j) {
71 assertEq(j in a, false);
77 function test_push() {
79 function prepare_arays() {
82 for (var i = 0; i != 50; ++i) {
84 a.length = i + base_index;
91 for (var i = 0; i != bag.length; ++i) {
98 var bag = prepare_arays();
100 for (var i = 0; i != bag.length; ++i) {
103 assertEq(a[a.length - 1], 2);
104 for (var j = 1; j < a.length - 1; ++j) {
105 assertEq(j in a, false);
110 function test_unshift() {
112 function prepare_arays() {
114 var base_index = 245;
115 for (var i = 0; i != 50; ++i) {
117 a.length = i + base_index;
124 for (var i = 0; i != bag.length; ++i) {
131 var bag = prepare_arays();
133 for (var i = 0; i != bag.length; ++i) {
138 for (var j = 3; j < a.length; ++j) {
139 assertEq(j in a, false);
144 function test_splice() {
146 function prepare_arays() {
148 var base_index = 245;
149 for (var i = 0; i != 50; ++i) {
151 a.length = i + base_index;
158 for (var i = 0; i != bag.length; ++i) {
160 a.splice(1, 0, "a", "b", "c");
165 var bag = prepare_arays();
167 for (var i = 0; i != bag.length; ++i) {
174 for (var j = 5; j < a.length; ++j) {
175 assertEq(j in a, false);