77
77
assertEquals(value_6, a[6]);
78
78
assertEquals(value_6, a[computed_6()]); // Test non-constant key
79
79
assertEquals(value_7, a[7]);
80
assertEquals(undefined, a[large_array_size-1]);
81
assertEquals(undefined, a[-1]);
82
80
assertEquals(large_array_size, a.length);
83
81
assertTrue(%HasFastDoubleElements(a));
89
87
assertEquals(value_6, a[6]);
90
88
assertEquals(value_6, a[computed_6()]); // Test non-constant key
91
89
assertEquals(value_7, a[7]);
92
assertEquals(undefined, a[large_array_size-1]);
93
assertEquals(undefined, a[-1]);
94
90
assertEquals(large_array_size, a.length);
95
91
assertTrue(%HasFastDoubleElements(a));
101
97
assertEquals(value_6, a[6]);
102
98
assertEquals(value_6, a[computed_6()]); // Test non-constant key
103
99
assertEquals(value_7, a[7]);
104
assertEquals(undefined, a[large_array_size-1]);
105
assertEquals(undefined, a[-1]);
106
100
assertEquals(large_array_size, a.length);
107
101
assertTrue(%HasFastDoubleElements(a));
113
107
assertEquals(value_6, a[6]);
114
108
assertEquals(value_6, a[computed_6()]); // Test non-constant key
115
109
assertEquals(value_7, a[7]);
116
assertEquals(undefined, a[large_array_size-1]);
117
assertEquals(undefined, a[-1]);
118
110
assertEquals(large_array_size, a.length);
119
111
assertTrue(%HasFastDoubleElements(a));
122
114
function test_various_loads5(a, value_5, value_6, value_7) {
123
115
assertTrue(%HasFastDoubleElements(a));
124
assertEquals(value_5, a[5]);
125
assertEquals(value_6, a[6]);
126
assertEquals(value_6, a[computed_6()]); // Test non-constant key
116
if (value_5 != undefined) {
117
assertEquals(value_5, a[5]);
119
if (value_6 != undefined) {
120
assertEquals(value_6, a[6]);
121
assertEquals(value_6, a[computed_6()]); // Test non-constant key
127
123
assertEquals(value_7, a[7]);
128
assertEquals(undefined, a[large_array_size-1]);
129
assertEquals(undefined, a[-1]);
130
124
assertEquals(large_array_size, a.length);
131
125
assertTrue(%HasFastDoubleElements(a));
137
131
assertEquals(value_6, a[6]);
138
132
assertEquals(value_6, a[computed_6()]); // Test non-constant key
139
133
assertEquals(value_7, a[7]);
140
assertEquals(undefined, a[large_array_size-1]);
141
assertEquals(undefined, a[-1]);
134
assertEquals(large_array_size, a.length);
135
assertTrue(%HasFastDoubleElements(a));
138
function test_various_loads7(a, value_5, value_6, value_7) {
139
assertTrue(%HasFastDoubleElements(a));
140
assertEquals(value_5, a[5]);
141
assertEquals(value_6, a[6]);
142
assertEquals(value_6, a[computed_6()]); // Test non-constant key
143
assertEquals(value_7, a[7]);
142
144
assertEquals(large_array_size, a.length);
143
145
assertTrue(%HasFastDoubleElements(a));
248
250
expected_array_value(7));
250
252
// Make sure Crankshaft code handles the hole correctly (bailout)
253
var large_array = new allocator(large_array_size);
254
force_to_fast_double_array(large_array);
251
255
test_various_stores(large_array,
252
256
expected_array_value(5),
253
257
expected_array_value(6),
274
278
expected_array_value(7));
280
%DeoptimizeFunction(test_various_loads6);
276
283
// Test stores for non-NaN.
284
var large_array = new allocator(large_array_size);
285
force_to_fast_double_array(large_array);
277
286
%OptimizeFunctionOnNextCall(test_various_stores);
278
287
test_various_stores(large_array,
279
288
expected_array_value(5),
285
294
expected_array_value(6),
286
295
expected_array_value(7));
288
test_various_loads6(large_array,
297
test_various_loads7(large_array,
298
expected_array_value(5),
299
expected_array_value(6),
300
expected_array_value(7));
302
test_various_loads7(large_array,
303
expected_array_value(5),
304
expected_array_value(6),
305
expected_array_value(7));
307
%OptimizeFunctionOnNextCall(test_various_loads7);
309
test_various_loads7(large_array,
289
310
expected_array_value(5),
290
311
expected_array_value(6),
291
312
expected_array_value(7));
302
323
expected_array_value(7));
304
test_various_loads6(large_array,
325
test_various_loads7(large_array,
307
328
expected_array_value(7));
318
339
expected_array_value(7));
320
test_various_loads6(large_array,
341
test_various_loads7(large_array,
323
344
expected_array_value(7));
449
469
function test_for_in() {
450
470
// Due to previous tests, keys 0..25 and 95 should be present.
451
471
next_expected = 0;
452
assertTrue(%HasFastDoubleElements(large_array3));
453
472
for (x in large_array3) {
454
473
assertTrue(next_expected++ == x);
455
474
if (next_expected == 25) {