getelem-getter-id-mismatch.js (2406B)
1 // Ensure BaselineInspector properly handles mixed atom/symbols when determining 2 // whether or not a jsop_getelem access to a getter can be inlined. 3 4 // Defined outside of the test functions to ensure they're recognised as 5 // constants in Ion. 6 var atom1 = "prop1"; 7 var atom2 = "prop2"; 8 var sym1 = Symbol(); 9 var sym2 = Symbol(); 10 11 function testAtomAtom() { 12 var holder = { 13 get [atom1]() { return 1; }, 14 get [atom2]() { return 2; }, 15 }; 16 17 function get(name) { 18 // Single access point called with different atoms. 19 return holder[name]; 20 } 21 22 function f() { 23 for (var i = 0; i < 1000; ++i) { 24 var x = get(atom1); 25 var y = get(atom2); 26 assertEq(x, 1); 27 assertEq(y, 2); 28 } 29 } 30 31 for (var i = 0; i < 2; i++) { 32 f(); 33 } 34 } 35 testAtomAtom(); 36 37 function testAtomSymbol() { 38 var holder = { 39 get [atom1]() { return 1; }, 40 get [sym2]() { return 2; }, 41 }; 42 43 function get(name) { 44 // Single access point called with atom and symbol. 45 return holder[name]; 46 } 47 48 function f() { 49 for (var i = 0; i < 1000; ++i) { 50 var x = get(atom1); 51 var y = get(sym2); 52 assertEq(x, 1); 53 assertEq(y, 2); 54 } 55 } 56 57 for (var i = 0; i < 2; i++) { 58 f(); 59 } 60 } 61 testAtomSymbol(); 62 63 function testSymbolAtom() { 64 var holder = { 65 get [sym1]() { return 1; }, 66 get [atom2]() { return 2; }, 67 }; 68 69 function get(name) { 70 // Single access point called with symbol and atom. 71 return holder[name]; 72 } 73 74 function f() { 75 for (var i = 0; i < 1000; ++i) { 76 var x = get(sym1); 77 var y = get(atom2); 78 assertEq(x, 1); 79 assertEq(y, 2); 80 } 81 } 82 83 for (var i = 0; i < 2; i++) { 84 f(); 85 } 86 } 87 testSymbolAtom(); 88 89 function testSymbolSymbol() { 90 var holder = { 91 get [sym1]() { return 1; }, 92 get [sym2]() { return 2; }, 93 }; 94 95 function get(name) { 96 // Single access point called with different symbols. 97 return holder[name]; 98 } 99 100 function f() { 101 for (var i = 0; i < 1000; ++i) { 102 var x = get(sym1); 103 var y = get(sym2); 104 assertEq(x, 1); 105 assertEq(y, 2); 106 } 107 } 108 109 for (var i = 0; i < 2; i++) { 110 f(); 111 } 112 } 113 testSymbolSymbol();