tor-browser

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

bug716624-1.js (2358B)


      1 function get_value_undefined(o) {
      2    return o.value
      3 }
      4 
      5 function get_value_null(o) {
      6    return o.value
      7 }
      8 
      9 function get_value_int(o) {
     10    return o.value
     11 }
     12 
     13 function get_value_effectfull(o) {
     14    return o.value
     15 }
     16 
     17 var count = 0
     18 var o_undefined = {value: undefined}
     19 var o_null = {value: null}
     20 var o_int = {value: 3}
     21 var o_effectfull = {}
     22 Object.defineProperty(o_effectfull, "value", { get: function () { count++; return undefined; } });
     23 
     24 // compiled as undefined
     25 for(var i=0; i<42; i++)
     26    get_value_undefined(o_undefined)
     27 
     28 // compiled as null
     29 for(var i=0; i<42; i++)
     30    get_value_null(o_null)
     31 
     32 // compiled as int
     33 for(var i=0; i<42; i++)
     34    get_value_int(o_int)
     35 
     36 // compiled as effectfull property access
     37 for(var i=0; i<42; i++)
     38    get_value_effectfull(o_effectfull)
     39 
     40 // Note:
     41 // because of bug 715111 when there is an invalidation we have bogus values on the stack. 
     42 // So we get wrong values. Therefor I run them twice. On as 'warmup'. Second time to test
     43 
     44 count = 0
     45 assertEq(get_value_undefined(o_undefined), undefined);
     46 get_value_undefined(o_null)
     47 assertEq(get_value_undefined(o_null), null);
     48 get_value_undefined(o_int)
     49 assertEq(get_value_undefined(o_int), 3);
     50 get_value_undefined(o_effectfull)
     51 assertEq(get_value_undefined(o_effectfull), undefined);
     52 assertEq(get_value_undefined(o_undefined), undefined);
     53 assertEq(count, 2);
     54 
     55 count = 0
     56 assertEq(get_value_null(o_null), null);
     57 get_value_null(o_undefined)
     58 assertEq(get_value_null(o_undefined), undefined);
     59 get_value_null(o_int)
     60 assertEq(get_value_null(o_int), 3);
     61 get_value_null(o_effectfull)
     62 assertEq(get_value_null(o_effectfull), undefined);
     63 assertEq(get_value_null(o_null), null);
     64 assertEq(count, 2);
     65 
     66 count = 0
     67 
     68 assertEq(get_value_int(o_int), 3);
     69 get_value_int(o_null)
     70 assertEq(get_value_int(o_null), null);
     71 get_value_int(o_undefined)
     72 assertEq(get_value_int(o_undefined), undefined);
     73 get_value_int(o_effectfull)
     74 assertEq(get_value_int(o_effectfull), undefined);
     75 assertEq(get_value_int(o_int), 3);
     76 assertEq(count, 2);
     77 
     78 count = 0
     79 
     80 assertEq(get_value_effectfull(o_effectfull), undefined);
     81 get_value_effectfull(o_null)
     82 assertEq(get_value_effectfull(o_null), null);
     83 get_value_effectfull(o_undefined)
     84 assertEq(get_value_effectfull(o_undefined), undefined);
     85 get_value_effectfull(o_int)
     86 assertEq(get_value_effectfull(o_int), 3);
     87 assertEq(get_value_effectfull(o_effectfull), undefined);
     88 assertEq(count, 2);