1 // Copyright 2014 the V8 project authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 var error = "error"; 6 function counter(x) { 7 return (function() { if (x-- == 0) throw error;}); 8 } 9 10 function Module() { 11 "use asm"; 12 13 function w0(f) { 14 while (1) f(); 15 return 108; 16 } 17 18 function w1(f) { 19 if (1) while (1) f(); 20 return 109; 21 } 22 23 function w2(f) { 24 if (1) while (1) f(); 25 else while (1) f(); 26 return 110; 27 } 28 29 function w3(f) { 30 if (0) while (1) f(); 31 return 111; 32 } 33 34 return { w0: w0, w1: w1, w2: w2, w3: w3 }; 35 } 36 37 var m = Module(); 38 assertThrowsEquals(function() { m.w0(counter(5)) }, error); 39 assertThrowsEquals(function() { m.w1(counter(5)) }, error); 40 assertThrowsEquals(function() { m.w2(counter(5)) }, error); 41 assertEquals(111, m.w3(counter(5))); 42