tor-browser

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

spread-call-near-maxarg.js (1576B)


      1 // FIXME: ASAN and debug builds run this too slowly for now.
      2 if (!getBuildConfiguration("debug") && !getBuildConfiguration("asan")) {
      3    let longArray = [];
      4    longArray.length = getMaxArgs() - 1;
      5    let shortArray = [];
      6    let a;
      7 
      8    let f = function() {
      9    };
     10 
     11    // Call_Scripted
     12    //   Optimized stub is used after some calls.
     13    a = shortArray;
     14    for (let i = 0; i < 4; i++) {
     15        if (i == 3) {
     16            a = longArray;
     17        }
     18        try {
     19            f(...a);
     20        } catch (e) {
     21            assertEq(e.message, "too much recursion");
     22        }
     23    }
     24 
     25    // Call_Scripted (constructing)
     26    a = shortArray;
     27    for (let i = 0; i < 4; i++) {
     28        if (i == 3) {
     29            a = longArray;
     30        }
     31        try {
     32            new f(...a);
     33        } catch (e) {
     34            assertEq(e.message, "too much recursion");
     35        }
     36    }
     37 
     38    // Call_Native
     39    a = shortArray;
     40    for (let i = 0; i < 4; i++) {
     41        if (i == 3) {
     42            a = longArray;
     43        }
     44        try {
     45            Math.max(...a);
     46        } catch (e) {
     47            assertEq(e.message, "too much recursion");
     48        }
     49    }
     50 
     51    // Call_Native (constructing)
     52    a = shortArray;
     53    for (let i = 0; i < 4; i++) {
     54        if (i == 3) {
     55            a = longArray;
     56        }
     57        try {
     58            new Date(...a);
     59        } catch (e) {
     60            assertEq(e.message, "too much recursion");
     61        }
     62    }
     63 
     64    // No optimized stub for eval.
     65    a = longArray;
     66    try {
     67        eval(...a);
     68    } catch (e) {
     69        assertEq(e.message, "too much recursion");
     70    }
     71 }