js/src/jit-test/tests/ion/bug716624-1.js

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 function get_value_undefined(o) {
     2     return o.value
     3 }
     5 function get_value_null(o) {
     6     return o.value
     7 }
     9 function get_value_int(o) {
    10     return o.value
    11 }
    13 function get_value_effectfull(o) {
    14     return o.value
    15 }
    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; } });
    24 // compiled as undefined
    25 for(var i=0; i<42; i++)
    26     get_value_undefined(o_undefined)
    28 // compiled as null
    29 for(var i=0; i<42; i++)
    30     get_value_null(o_null)
    32 // compiled as int
    33 for(var i=0; i<42; i++)
    34     get_value_int(o_int)
    36 // compiled as effectfull property access
    37 for(var i=0; i<42; i++)
    38     get_value_effectfull(o_effectfull)
    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
    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);
    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);
    66 count = 0
    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);
    78 count = 0
    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);

mercurial