tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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);