1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/js/src/jit-test/tests/jaeger/testSetElem-Indexed.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,36 @@ 1.4 +// vim: set ts=8 sts=4 et sw=4 tw=99: 1.5 + 1.6 +function f() { 1.7 + return [[], [], [], []]; 1.8 +} 1.9 + 1.10 +function setelem(obj, key, val) { 1.11 + obj[key] = val; 1.12 +} 1.13 + 1.14 +// Generate IC 1.15 +setelem([], 0, "hi"); 1.16 +setelem([], 0, "hi"); 1.17 + 1.18 +// Get some arrays pre-indexing. 1.19 +var arrays = f(); 1.20 + 1.21 +// Do bad stuff. 1.22 +Object.defineProperty(Object.prototype, "1", { set: function (v) { this.kettle = v; } }); 1.23 + 1.24 +var k = arrays[0]; 1.25 +setelem(k, 1, 13); 1.26 +assertEq(k.kettle, 13); 1.27 +assertEq(k.hasOwnProperty("1"), false); 1.28 + 1.29 +Object.defineProperty(Array.prototype, "2", { set: function (v) { this.pot = v; } }); 1.30 +k = arrays[1]; 1.31 +setelem(k, 2, "yam"); 1.32 +assertEq(k.pot, "yam"); 1.33 + 1.34 +gc(); 1.35 + 1.36 +// make sure this reset okay. 1.37 +setelem([], 0, "hi"); 1.38 +setelem([], 0, "hi"); 1.39 +