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);