Wed, 31 Dec 2014 06:09:35 +0100
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);