testMethodWriteBarrier3.js (432B)
1 function g() {} 2 3 function h() { 4 for (var i = 0; i < 9; i++) 5 x.f = i; 6 } 7 8 function j() { 9 x.f(); 10 } 11 12 var x = {f: 0.7, g: g}; 13 x.g(); // interpreter brands x 14 h(); 15 print(shapeOf(x)); 16 x.f = function (){}; // does not change x's shape 17 j(); 18 print(shapeOf(x)); 19 h(); // should change x's shape 20 21 var thrown = 'none'; 22 try { 23 j(); // should throw since x.f === 8 24 } catch (exc) { 25 thrown = exc.name; 26 } 27 assertEq(thrown, 'TypeError');