| // The index is negative before code generation. |
| |
| let v = {}; |
| let negativeIndex = -1; |
| |
| function f(obj) { |
| assertEq(obj[negativeIndex] === v, true); |
| } |
| for (let i = 0; i < 2000; i++) { |
| let obj = {}; |
| obj[1] = {}; |
| obj[negativeIndex] = v; |
| f(obj); |
| } |
| |
| // The sign of the index changes after the code generation. |
| |
| function g(obj, i) { |
| for (let j = 0; j < 4; j++) { |
| assertEq(obj[i-j] === v, true); |
| } |
| } |
| for (let i = 0; i < 2000; i++) { |
| let obj = {}; |
| obj[1] = {}; |
| let X = 2000 - i; |
| for (let j = 0; j < 10; j++) { |
| obj[X-j] = v; |
| } |
| g(obj, X); |
| } |