| function shouldBe(actual, expected) { |
| if (actual !== expected) |
| throw new Error('bad value: ' + actual); |
| } |
| |
| var array = [1, 2, 3, 4, 5]; |
| var array2 = [1, "HELLO", 3, 4, 5]; |
| var array3 = [0.1, "OK", 0.3, 0.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.length; |
| } |
| noInline(testArrayStorage); |
| |
| for (var i = 0; i < 1e6; ++i) { |
| shouldBe(testArrayStorage(array), 5); |
| shouldBe(testArrayStorage(array2), 5); |
| shouldBe(testArrayStorage(array3), 5); |
| } |
| |
| var array4 = {0:1, 1:"HELLO", 2:3, 3:4, 4:5}; |
| ensureArrayStorage(array4); |
| shouldBe(testArrayStorage(array4), undefined); |