double-property-key.js (1219B)
1 // Test keys from -n to n, stepping by 0.5. 2 function testNearZero(n) { 3 let arr = []; 4 for (let i = -n; i <= n; i += 0.5) { 5 arr[i] = i; 6 } 7 8 for (let i = 0; i < 10; i++) { 9 for (let j = -n; j <= n; j += 0.5) { 10 arr[j] = arr[j] + 1; 11 } 12 } 13 14 for (let i = -n * 2; i <= n * 2; i += 0.5) { 15 let shouldContain = i >= -n && i <= n; 16 assertEq(i in arr, shouldContain); 17 if (shouldContain) { 18 assertEq(arr[i], i + 10); 19 } 20 } 21 } 22 23 // Specialized 24 testNearZero(1); 25 26 // Megomorphic 27 testNearZero(5); 28 29 30 // Test keys from UINT32_MAX - n to UINT32_MAX + n, stepping by 0.5 31 function testNearUint32Max(n) { 32 let UINT32_MAX = 0x7fff_ffff; 33 let arr = []; 34 for (let i = UINT32_MAX - n; i <= UINT32_MAX + n; i += 0.5) { 35 arr[i] = i; 36 } 37 38 for (let i = 0; i < 10; i++) { 39 for (let j = UINT32_MAX - n; j <= UINT32_MAX + n; j += 0.5) { 40 arr[j] = arr[j] + 1; 41 } 42 } 43 44 for (let i = UINT32_MAX - n * 2; i <= UINT32_MAX + n * 2; i += 0.5) { 45 let shouldContain = i >= UINT32_MAX - n && i <= UINT32_MAX + n; 46 assertEq(i in arr, shouldContain); 47 if (shouldContain) { 48 assertEq(arr[i], i + 10); 49 } 50 } 51 } 52 53 // Specialized 54 testNearUint32Max(1); 55 56 // Megamorphic 57 testNearUint32Max(5);