michael@0: // vim: set ts=8 sts=4 et sw=4 tw=99: michael@0: michael@0: function f() { michael@0: return [[], [], [], []]; michael@0: } michael@0: michael@0: function setelem(obj, key, val) { michael@0: obj[key] = val; michael@0: } michael@0: michael@0: // Generate IC michael@0: setelem([], 0, "hi"); michael@0: setelem([], 0, "hi"); michael@0: michael@0: // Get some arrays pre-indexing. michael@0: var arrays = f(); michael@0: michael@0: // Do bad stuff. michael@0: Object.defineProperty(Object.prototype, "1", { set: function (v) { this.kettle = v; } }); michael@0: michael@0: var k = arrays[0]; michael@0: setelem(k, 1, 13); michael@0: assertEq(k.kettle, 13); michael@0: assertEq(k.hasOwnProperty("1"), false); michael@0: michael@0: Object.defineProperty(Array.prototype, "2", { set: function (v) { this.pot = v; } }); michael@0: k = arrays[1]; michael@0: setelem(k, 2, "yam"); michael@0: assertEq(k.pot, "yam"); michael@0: michael@0: gc(); michael@0: michael@0: // make sure this reset okay. michael@0: setelem([], 0, "hi"); michael@0: setelem([], 0, "hi"); michael@0: