tor-browser

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

function-flags.js (1112B)


      1 load(libdir + 'bytecode-cache.js');
      2 
      3 var test;
      4 
      5 // Ensure that if a function is encoded we don't encode its "name
      6 // resolved" flag.
      7 test = `
      8  function f() { delete f.name; return f.hasOwnProperty('name'); }
      9  f();
     10  `
     11 evalWithCache(test, { assertEqBytecode: true, assertEqResult: true });
     12 
     13 test = `
     14  function f() { return f.hasOwnProperty('name'); }
     15  f();
     16  `
     17 evalWithCache(test, { assertEqBytecode: true, assertEqResult: true });
     18 
     19 // Ensure that if a function is encoded we don't encode its "length
     20 // resolved" flag.
     21 test = `
     22  function f() { delete f.length; return f.hasOwnProperty('length'); }
     23  f();
     24  `
     25 evalWithCache(test, { assertEqBytecode: true, assertEqResult: true });
     26 
     27 test = `
     28  function f() { return f.hasOwnProperty('length'); }
     29  f();
     30  `
     31 evalWithCache(test, { assertEqBytecode: true, assertEqResult: true });
     32 
     33 // And make sure our bytecode is actually not reflecting the flags,
     34 // not that we ignore them on decode.
     35 test = `
     36  function f() { return f.hasOwnProperty('length') || f.hasOwnProperty('name'); }
     37  f();
     38  `
     39 evalWithCache(test, { assertEqBytecode: true, assertEqResult: true });