inlined-accessor-exc-bailout.js (893B)
1 // |jit-test| --fast-warmup 2 3 // Tests for exception bailout from inlined getter/setter. 4 5 function throwingGetter() { 6 var o = {}; 7 var count = 0; 8 Object.defineProperty(o, "getter", {get: function() { 9 if (count++ === 195) { 10 throw 1; 11 } 12 }}); 13 var ex = null; 14 try { 15 for (var i = 0; i < 200; i++) { 16 o.getter; 17 } 18 } catch(e) { 19 ex = e; 20 } 21 assertEq(ex, 1); 22 assertEq(count, 196); 23 } 24 throwingGetter(); 25 26 function throwingSetter() { 27 var o = {}; 28 var count = 0; 29 Object.defineProperty(o, "setter", {set: function(v) { 30 if (count++ === 195) { 31 throw 1; 32 } 33 }}); 34 var ex = null; 35 try { 36 for (var i = 0; i < 200; i++) { 37 o.setter = i; 38 } 39 } catch(e) { 40 ex = e; 41 } 42 assertEq(ex, 1); 43 assertEq(count, 196); 44 } 45 throwingSetter();