shape-teleporting-3.js (807B)
1 function test1() { 2 var o1 = {x: 1, y: 2, z: 3}; 3 var o2 = Object.create(o1); 4 var o3 = Object.create(o2); 5 o2.x = 2; // Ensure teleporting is invalidated for o1. 6 for (var i = 0; i < 30; i++) { 7 assertEq(o3.y, i > 20 ? -1 : 2); 8 if (i === 20) { 9 // Add a (second) shadowing property to o2. The property access 10 // above must detect this properly. 11 o2.y = -1; 12 } 13 } 14 } 15 test1(); 16 17 function test2() { 18 var o1 = {x: 1, y: 2, z: 3}; 19 var o2 = Object.create(o1); 20 var o3 = Object.create(o2); 21 var o4 = Object.create(o3); 22 o2.x = 1; 23 o2.a = 2; 24 o3.a = 2; 25 for (var i = 0; i < 30; i++) { 26 assertEq(o4.y, i > 20 ? undefined : 2); 27 if (i === 20) { 28 o2.__proto__ = null; 29 } 30 } 31 } 32 test2();