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

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:090ac079634d
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);

mercurial