tor-browser

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

getelem-getter-proto.js (1152B)


      1 // Test for inlined getters for jsop_getelem accesses, where the getter is a
      2 // property on the prototype.
      3 
      4 // Defined outside of the test functions to ensure they're recognised as
      5 // constants in Ion.
      6 var atom1 = "prop1";
      7 var atom2 = "prop2";
      8 var sym1 = Symbol();
      9 var sym2 = Symbol();
     10 
     11 function testAtom() {
     12    var proto = {
     13        get [atom1]() { return 1; },
     14        get [atom2]() { return 2; },
     15    };
     16 
     17    var holder = Object.create(proto);
     18 
     19    function f() {
     20        for (var i = 0; i < 1000; ++i) {
     21            var x = holder[atom1];
     22            var y = holder[atom2];
     23            assertEq(x, 1);
     24            assertEq(y, 2);
     25        }
     26    }
     27 
     28    for (var i = 0; i < 2; i++) {
     29        f();
     30    }
     31 }
     32 testAtom();
     33 
     34 function testSymbol() {
     35    var proto = {
     36        get [sym1]() { return 1; },
     37        get [sym2]() { return 2; },
     38    };
     39 
     40    var holder = Object.create(proto);
     41 
     42    function f() {
     43        for (var i = 0; i < 1000; ++i) {
     44            var x = holder[sym1];
     45            var y = holder[sym2];
     46            assertEq(x, 1);
     47            assertEq(y, 2);
     48        }
     49    }
     50 
     51    for (var i = 0; i < 2; i++) {
     52        f();
     53    }
     54 }
     55 testSymbol();