tor-browser

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

spreadcall-not-optimized-static-4a.js (915B)


      1 // Tests when JSOP_OPTIMIZE_SPREADCALL can't be applied during the initial
      2 // Ion compilation.
      3 
      4 // JSOP_OPTIMIZE_SPREADCALL can be optimised when the following conditions
      5 // are fulfilled:
      6 //   (1) the argument is an array
      7 //   (2) the array has no hole
      8 //   (3) array[@@iterator] is not modified
      9 //   (4) the array's prototype is Array.prototype
     10 //   (5) Array.prototype[@@iterator] is not modified
     11 //   (6) %ArrayIteratorPrototype%.next is not modified
     12 
     13 function add(a, b) {
     14    return a + b;
     15 }
     16 
     17 // The rest arguments don't share a common prototype.
     18 function test() {
     19    class MyArray1 extends Array { }
     20    class MyArray2 extends Array { }
     21    function fn(...rest) {
     22        if (i & 1)
     23            rest = new MyArray1(3, 4);
     24        else
     25            rest = new MyArray2(5, 6);
     26        return add(...rest);
     27    }
     28    for (var i = 0; i < 2000; ++i) {
     29        assertEq(fn(1, 2), (i & 1) ? 7 : 11);
     30    }
     31 }
     32 test();