iterator-indices-8.js (1056B)
1 // Tests megamorphic stores to fixed and dynamics slots, and dense elements 2 function test(obj) { 3 let index = 0; 4 for (var s in obj) { 5 obj[s] = index; 6 index++; 7 } 8 index = 0; 9 for (var s in obj) { 10 assertEq(obj[s], index); 11 index++; 12 } 13 } 14 function test2(obj) { 15 let index = 0; 16 var keys = Object.keys(obj); 17 for (var i = 0; i < keys.length; i++) { 18 var s = keys[i]; 19 obj[s] = index; 20 index++; 21 } 22 index = 0; 23 var keys = Object.keys(obj); 24 for (var i = 0; i < keys.length; i++) { 25 var s = keys[i]; 26 assertEq(obj[s], index); 27 index++; 28 } 29 } 30 31 var arr = []; 32 var arr2 = []; 33 var elem_obj = []; 34 var elem_obj2 = []; 35 for (var i = 0; i < 20; i++) { 36 var obj = {}; 37 var obj2 = {}; 38 for (var j = 0; j < i; j++) { 39 obj["x_" + i + "_" + j] = 1; 40 obj2["x_" + i + "_" + j] = 1; 41 } 42 arr.push(obj); 43 arr2.push(obj2); 44 elem_obj.push(1); 45 elem_obj2.push(1); 46 } 47 arr.push(elem_obj); 48 arr2.push(elem_obj2); 49 50 with ({}) {} 51 for (var i = 0; i < 2000; i++) { 52 var idx = i % arr.length; 53 test(arr[idx]); 54 test2(arr2[idx]); 55 }