testSetElem-Indexed.js (696B)
1 // vim: set ts=8 sts=4 et sw=4 tw=99: 2 3 function f() { 4 return [[], [], [], []]; 5 } 6 7 function setelem(obj, key, val) { 8 obj[key] = val; 9 } 10 11 // Generate IC 12 setelem([], 0, "hi"); 13 setelem([], 0, "hi"); 14 15 // Get some arrays pre-indexing. 16 var arrays = f(); 17 18 // Do bad stuff. 19 Object.defineProperty(Object.prototype, "1", { set: function (v) { this.kettle = v; } }); 20 21 var k = arrays[0]; 22 setelem(k, 1, 13); 23 assertEq(k.kettle, 13); 24 assertEq(k.hasOwnProperty("1"), false); 25 26 Object.defineProperty(Array.prototype, "2", { set: function (v) { this.pot = v; } }); 27 k = arrays[1]; 28 setelem(k, 2, "yam"); 29 assertEq(k.pot, "yam"); 30 31 gc(); 32 33 // make sure this reset okay. 34 setelem([], 0, "hi"); 35 setelem([], 0, "hi");