1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/js/src/jit-test/tests/ion/bug716624-1.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,88 @@ 1.4 +function get_value_undefined(o) { 1.5 + return o.value 1.6 +} 1.7 + 1.8 +function get_value_null(o) { 1.9 + return o.value 1.10 +} 1.11 + 1.12 +function get_value_int(o) { 1.13 + return o.value 1.14 +} 1.15 + 1.16 +function get_value_effectfull(o) { 1.17 + return o.value 1.18 +} 1.19 + 1.20 +var count = 0 1.21 +var o_undefined = {value: undefined} 1.22 +var o_null = {value: null} 1.23 +var o_int = {value: 3} 1.24 +var o_effectfull = {} 1.25 +Object.defineProperty(o_effectfull, "value", { get: function () { count++; return undefined; } }); 1.26 + 1.27 +// compiled as undefined 1.28 +for(var i=0; i<42; i++) 1.29 + get_value_undefined(o_undefined) 1.30 + 1.31 +// compiled as null 1.32 +for(var i=0; i<42; i++) 1.33 + get_value_null(o_null) 1.34 + 1.35 +// compiled as int 1.36 +for(var i=0; i<42; i++) 1.37 + get_value_int(o_int) 1.38 + 1.39 +// compiled as effectfull property access 1.40 +for(var i=0; i<42; i++) 1.41 + get_value_effectfull(o_effectfull) 1.42 + 1.43 +// Note: 1.44 +// because of bug 715111 when there is an invalidation we have bogus values on the stack. 1.45 +// So we get wrong values. Therefor I run them twice. On as 'warmup'. Second time to test 1.46 + 1.47 +count = 0 1.48 +assertEq(get_value_undefined(o_undefined), undefined); 1.49 +get_value_undefined(o_null) 1.50 +assertEq(get_value_undefined(o_null), null); 1.51 +get_value_undefined(o_int) 1.52 +assertEq(get_value_undefined(o_int), 3); 1.53 +get_value_undefined(o_effectfull) 1.54 +assertEq(get_value_undefined(o_effectfull), undefined); 1.55 +assertEq(get_value_undefined(o_undefined), undefined); 1.56 +assertEq(count, 2); 1.57 + 1.58 +count = 0 1.59 +assertEq(get_value_null(o_null), null); 1.60 +get_value_null(o_undefined) 1.61 +assertEq(get_value_null(o_undefined), undefined); 1.62 +get_value_null(o_int) 1.63 +assertEq(get_value_null(o_int), 3); 1.64 +get_value_null(o_effectfull) 1.65 +assertEq(get_value_null(o_effectfull), undefined); 1.66 +assertEq(get_value_null(o_null), null); 1.67 +assertEq(count, 2); 1.68 + 1.69 +count = 0 1.70 + 1.71 +assertEq(get_value_int(o_int), 3); 1.72 +get_value_int(o_null) 1.73 +assertEq(get_value_int(o_null), null); 1.74 +get_value_int(o_undefined) 1.75 +assertEq(get_value_int(o_undefined), undefined); 1.76 +get_value_int(o_effectfull) 1.77 +assertEq(get_value_int(o_effectfull), undefined); 1.78 +assertEq(get_value_int(o_int), 3); 1.79 +assertEq(count, 2); 1.80 + 1.81 +count = 0 1.82 + 1.83 +assertEq(get_value_effectfull(o_effectfull), undefined); 1.84 +get_value_effectfull(o_null) 1.85 +assertEq(get_value_effectfull(o_null), null); 1.86 +get_value_effectfull(o_undefined) 1.87 +assertEq(get_value_effectfull(o_undefined), undefined); 1.88 +get_value_effectfull(o_int) 1.89 +assertEq(get_value_effectfull(o_int), 3); 1.90 +assertEq(get_value_effectfull(o_effectfull), undefined); 1.91 +assertEq(count, 2);