| function shouldBe(actual, expected) { |
| if (actual !== expected) |
| throw new Error('bad value: ' + actual); |
| } |
| |
| var array = {0:1, 1:2, 2:3, 3:4, 4:5}; |
| var array2 = {0:1, 1:"HELLO", 2:3, 3:4, 4:5}; |
| var array3 = {0:0.1, 1:"OK", 2:0.3, 3:0.4, 4:0.5}; |
| ensureArrayStorage(array2); |
| array.ok = 42; |
| array2.ok = 42; |
| array3.ok = 42; |
| |
| // Arrayify(ArrayStorage) works with ftl-eager |
| function testArrayStorage(array) |
| { |
| return array[4]; |
| } |
| noInline(testArrayStorage); |
| |
| for (var i = 0; i < 1e6; ++i) { |
| shouldBe(testArrayStorage(array), 5); |
| shouldBe(testArrayStorage(array2), 5); |
| shouldBe(testArrayStorage(array3), 0.5); |
| } |
| |
| var array4 = [0, 1, 2, 3, 4]; |
| shouldBe(testArrayStorage(array4), 4); |