getelem-getter-proto.js (1152B)
1 // Test for inlined getters for jsop_getelem accesses, where the getter is a 2 // property on the prototype. 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 testAtom() { 12 var proto = { 13 get [atom1]() { return 1; }, 14 get [atom2]() { return 2; }, 15 }; 16 17 var holder = Object.create(proto); 18 19 function f() { 20 for (var i = 0; i < 1000; ++i) { 21 var x = holder[atom1]; 22 var y = holder[atom2]; 23 assertEq(x, 1); 24 assertEq(y, 2); 25 } 26 } 27 28 for (var i = 0; i < 2; i++) { 29 f(); 30 } 31 } 32 testAtom(); 33 34 function testSymbol() { 35 var proto = { 36 get [sym1]() { return 1; }, 37 get [sym2]() { return 2; }, 38 }; 39 40 var holder = Object.create(proto); 41 42 function f() { 43 for (var i = 0; i < 1000; ++i) { 44 var x = holder[sym1]; 45 var y = holder[sym2]; 46 assertEq(x, 1); 47 assertEq(y, 2); 48 } 49 } 50 51 for (var i = 0; i < 2; i++) { 52 f(); 53 } 54 } 55 testSymbol();