| function assertEq(a, b) { |
| if (a !== b) |
| throw new Error("values not the same: " + a + " and " + b); |
| } |
| |
| function withArrayArgInt32(i, array) { |
| let result = array[i]; |
| assertEq($vm.indexingMode(array), "CopyOnWriteArrayWithInt32"); |
| } |
| noInline(withArrayArgInt32); |
| |
| function withArrayLiteralInt32(i) { |
| let array = [0,1,2]; |
| let result = array[i]; |
| assertEq($vm.indexingMode(array), "CopyOnWriteArrayWithInt32"); |
| } |
| noInline(withArrayLiteralInt32); |
| |
| |
| function withArrayArgDouble(i, array) { |
| let result = array[i]; |
| assertEq($vm.indexingMode(array), "CopyOnWriteArrayWithDouble"); |
| } |
| noInline(withArrayArgDouble); |
| |
| function withArrayLiteralDouble(i) { |
| let array = [0,1.3145,2]; |
| let result = array[i]; |
| assertEq($vm.indexingMode(array), "CopyOnWriteArrayWithDouble"); |
| } |
| noInline(withArrayLiteralDouble); |
| |
| function withArrayArgContiguous(i, array) { |
| let result = array[i]; |
| assertEq($vm.indexingMode(array), "CopyOnWriteArrayWithContiguous"); |
| } |
| noInline(withArrayArgContiguous); |
| |
| function withArrayLiteralContiguous(i) { |
| let array = [0,"string",2]; |
| let result = array[i]; |
| assertEq($vm.indexingMode(array), "CopyOnWriteArrayWithContiguous"); |
| } |
| noInline(withArrayLiteralContiguous); |
| |
| function test() { |
| withArrayArgInt32(0, [0,1,2]); |
| withArrayArgDouble(0, [0,1.3145,2]); |
| withArrayArgContiguous(0, [0,"string",2]); |
| |
| withArrayLiteralInt32(0); |
| withArrayLiteralDouble(0); |
| withArrayLiteralContiguous(0); |
| } |
| |
| for (let i = 0; i < 10000; i++) |
| test(); |