()
| 102 | |
| 103 | // Make sure the element kind transitions from smi when a non-smi is stored. |
| 104 | function test_wrapper() { |
| 105 | var you = new Array(); |
| 106 | assertKind(elements_kind.fast_smi_only, you); |
| 107 | for (var i = 0; i < 1337; i++) { |
| 108 | var val = i; |
| 109 | if (i == 1336) { |
| 110 | assertKind(elements_kind.fast_smi_only, you); |
| 111 | val = new Object(); |
| 112 | } |
| 113 | you[i] = val; |
| 114 | } |
| 115 | assertKind(elements_kind.fast, you); |
| 116 | |
| 117 | var temp = []; |
| 118 | // If we store beyond kMaxGap (1024) we should transition to slow elements. |
| 119 | temp[1024] = 0; |
| 120 | assertKind(elements_kind.dictionary, temp); |
| 121 | |
| 122 | var fast_double_array = new Array(0xDECAF); |
| 123 | // If the gap is greater than 1024 (kMaxGap) we would transition the array |
| 124 | // to slow. So increment should be less than 1024. |
| 125 | for (var i = 0; i < 0xDECAF; i+=1023) { |
| 126 | fast_double_array[i] = i / 2; |
| 127 | } |
| 128 | assertKind(elements_kind.fast_double, fast_double_array); |
| 129 | |
| 130 | assertKind(elements_kind.fixed_int8, new Int8Array(007)); |
| 131 | assertKind(elements_kind.fixed_uint8, new Uint8Array(007)); |
| 132 | assertKind(elements_kind.fixed_int16, new Int16Array(666)); |
| 133 | assertKind(elements_kind.fixed_uint16, new Uint16Array(42)); |
| 134 | assertKind(elements_kind.fixed_int32, new Int32Array(0xF)); |
| 135 | assertKind(elements_kind.fixed_uint32, new Uint32Array(23)); |
| 136 | assertKind(elements_kind.fixed_float16, new Float16Array(7)); |
| 137 | assertKind(elements_kind.fixed_float32, new Float32Array(7)); |
| 138 | assertKind(elements_kind.fixed_float64, new Float64Array(0)); |
| 139 | assertKind(elements_kind.fixed_uint8_clamped, new Uint8ClampedArray(512)); |
| 140 | |
| 141 | var ab = new ArrayBuffer(128); |
| 142 | assertKind(elements_kind.fixed_int8, new Int8Array(ab)); |
| 143 | assertKind(elements_kind.fixed_uint8, new Uint8Array(ab)); |
| 144 | assertKind(elements_kind.fixed_int16, new Int16Array(ab)); |
| 145 | assertKind(elements_kind.fixed_uint16, new Uint16Array(ab)); |
| 146 | assertKind(elements_kind.fixed_int32, new Int32Array(ab)); |
| 147 | assertKind(elements_kind.fixed_uint32, new Uint32Array(ab)); |
| 148 | assertKind(elements_kind.fixed_float16, new Float16Array(ab)); |
| 149 | assertKind(elements_kind.fixed_float32, new Float32Array(ab)); |
| 150 | assertKind(elements_kind.fixed_float64, new Float64Array(ab)); |
| 151 | assertKind(elements_kind.fixed_uint8_clamped, new Uint8ClampedArray(ab)); |
| 152 | |
| 153 | // Crankshaft support for smi-only array elements. |
| 154 | function monomorphic(array) { |
| 155 | assertKind(elements_kind.fast_smi_only, array); |
| 156 | for (var i = 0; i < 3; i++) { |
| 157 | array[i] = i + 10; |
| 158 | } |
| 159 | assertKind(elements_kind.fast_smi_only, array); |
| 160 | for (var i = 0; i < 3; i++) { |
| 161 | var a = array[i]; |
no test coverage detected